【发布时间】:2013-12-21 17:18:48
【问题描述】:
如何检查数组中的数字是否相等? 我有一个包含 10 个数字的数组,我想检查两个或多个数字是否相等。 检查这个的最好方法是什么? 谢谢。
【问题讨论】:
-
数字在什么范围内?它们是浮点数还是整数?
-
我认为最直接的方法是对数组进行排序,然后比较相邻元素。
-
排序然后相邻比较是广义的解决方案,并且消耗 O(n log n)。在可能值的范围有限的特定情况下,将每个值用作辅助数组的索引,并在每次出现该值时将该元素加一。一旦一个元素被多次增加,你就有了一个骗局。这是一个不太通用的解决方案,但是 O(n)。
-
最佳的通用算法是使用提供散列的 C 库,并注意散列冲突。这也是 O(n),并且不会对输入施加限制。