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

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

http://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#

# @param array int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def splitArrayByBit(self,  idx, array):
        arr1 = []
        arr2 = []
        for item in array:
            v = item & 1<<idx
            if v != 0:
                arr1.append(item)
            else:
                arr2.append(item)
        return arr1, arr2

    
    def FindNumsAppearOnce(self , array ):
        # write code here
        lenA = len(array)
        if lenA <= 0:
            return None
        v = array[0]
        for idx, item in enumerate(array):
            if idx == 0:
                continue 
            v = v^item
        for i in range(0, 32):
            r = v & (1 << i)
            print("r:",r)
            if r != 0:
                break

        ret1, ret2 = self.splitArrayByBit(i, array)

        
        v1 = ret1[0]
        v2 = ret2[0]
        for idx, item in enumerate(ret1):
            if idx == 0:
                continue 
            v1 = v1 ^ item
        
        for idx, item in enumerate(ret2):
            if idx == 0:
                continue 
            v2 = v2 ^ item
            
        return sorted([v1, v2])
全部评论

相关推荐

不知道怎么取名字_:28届都开始出来找机会了,看来哪里都卷
实习简历求拷打
点赞 评论 收藏
分享
我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务