我们有一个n
个数字的数组,除了一个数字之外,所有数字都在这个数组中重复了很多次;我们想要找到重复奇数次的数字。
我认为最优算法的时间复杂度优于O( n Log(n) )
,因为我们可以对数组进行排序然后迭代它,当我们看到一个新数字时,我们增加一个累加器,当我们再看到它时,我们减少累加器最后,累加器不为零的每个成员都被重复了很多次。
另外我认为它没有比O(n)
更好的算法,因为如果它有,那么它必须是O( Log(n) )
,为此我们需要一个有序数组,但我们的初始数组不是。
答案 0 :(得分:5)
如果数字是整数,则可以只计算数组中的所有值。结果是重复奇数次数(这是正确的,因为任何x xor x = 0
都是x
)。该算法的复杂性显然是O(n)
。