劍指offer29 --- 數組中只出現一次的數字

劍指offer29 — 數組中只出現一次的數字

題目

一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。

分析

在這裏插入圖片描述

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出現一次的兩個數字
    def FindNumsAppearOnce(self, array):
        # write code here
        if len(array) <2:
            return None
        twoNumXor = None
        for num in array:
            if twoNumXor == None:
                twoNumXor = num
            else:
                twoNumXor = twoNumXor ^ num
        count = 0
        while twoNumXor >> 1:
            twoNumXor = twoNumXor >> 1
            count += 1
        mask = 1 << count
        
        firstNum = None
        secondNum = None
        
        for num in array:
            if mask & num == 0:
                if firstNum == None:
                    firstNum = num
                else:
                    firstNum = firstNum ^ num
            else:
                if secondNum == None:
                    secondNum = num
                else:
                    secondNum = secondNum ^ num
        return firstNum, secondNum

牛客網該題鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章