题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
http://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param array int整型一维数组 # @return int整型一维数组 # class Solution: def FindNumsAppearOnce(self , array ): # write code here # 假设要求的两个数是x, y. 先全部xor, 得到XORsum = x xor y XORsum = 0 for i in array: XORsum ^= i # 找到XORsum中是1的某一位 t = 1 while (XORsum&t)==0: t= t<<1 #按照这一位将原数组分成两个,分别包含x和y. 再组内异或即可得到结果。 ans1 = 0 ans2 = 0 for i in array: if (t&i)==0: ans1 ^= i; else: ans2 ^= i; if ans1<ans2: return [ans1,ans2] else: return [ans2,ans1]