找到在列表中只出现一次的数字的最佳算法是什么,其中所有其他数字恰好发生两次.
因此,在整数列表中(让它作为一个数组),每个整数重复两次,除了一个.找到那个,什么是最好的算法.
我已经尝试解决这个问题很久了,但我似乎无法解决。
问题如下:
给定一个数组 n 个数字,其中所有数字都出现两次,除了一个只出现一次,找出只出现一次的数字。
现在,我在网上找到了很多解决方案,但没有一个满足问题的额外限制。
解决方案应该:
因此,使用 XOR 运算符尝试类似/sf/answers/334079791/的操作是不可能的,因为我们没有 XOR 运算符。由于每个数字的位数大约为 O(log(n)),尝试使用普通算术(逐位)实现 XOR 运算符将需要大约 O(log(n)) 个动作,这将给我们一个整体O(nlog(n)) 的解。
我最接近解决它的是,如果我有办法在线性时间内获得数组中所有唯一值的总和,我可以从总和中减去该总和的两倍以获得(负)仅出现一次的元素的,因为如果出现两次的数字是{A1,A2,...,AK},而出现一次的数量为x时,则整体的总和为
总和= 2(A1 + ... + AK)+ X
就据我所知,集合是使用哈希表实现的,因此使用它们来查找所有唯一值的总和是不好的。