【发布时间】:2014-11-12 17:25:10
【问题描述】:
假设我们有一个由 N 个元素组成的整数数组,它由 0 到 10000 之间的整数组成。我们需要多次检测包含一个数字的数字,例如 1245 有效,而 1214 无效。我们如何才能以最佳方式做到这一点?谢谢!
【问题讨论】:
-
根据您告诉我们的最佳方法是扫描整个数组并扫描数组中的每个元素。你的想法是什么?
-
由于我们需要检查每个整数,是的,我认为我们必须扫描整个数组。但是,我认为真正的问题是如何有效地检测每个整数中的重复整数。
-
你打算如何在不查看每个数字的情况下做到这一点?
-
我们可以将每个数字与其他数字进行比较,但这会给我们 O(N^2) 对吗?有没有更好的、复杂度更低的解决方案?
-
不是 O(n^2)。它是 O(n * d),其中
n是列表中的项目数,d是每个数字的平均位数。而且,不,没有更好的解决方案。您必须查看每个数字中的每个数字。