题解 | #数组中只出现一次的两个数字#

数组中只出现一次的两个数字

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]
全部评论

相关推荐

躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务