Single Number III
要点:这题和I一脉相承,从1个不同变成2个不同,其他数是配对。而II是三个重复
逻辑:因为全部数的xor值在其他两两相同值消掉之后,剩下2个异类的xor相当于二者的不同的位。这样可以根据最低不同位把2个不同数选出来:把其他数分成两组再按I的方法选。class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: List[int] """ xor = 0 for n in nums: xor^=n bit = xor & ~(xor-1) xor1,xor2 = 0,0 for n in nums: if n & bit: xor1^=n else: xor2^=n return [xor1, xor2]