1. 程式人生 > >劍指offer_陣列中只出現一次的數字

劍指offer_陣列中只出現一次的數字

題目描述

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

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出現一次的兩個數字
    def FindNumsAppearOnce(self, array):
        # write code here
        hashmap={}
        for i in array:
            if i in hashmap:
                hashmap[i]+=1
            else:
                hashmap[i]=1
        res=[]
        for k in hashmap.keys():
            if hashmap[k]==1:
                res.append(k)
        return res

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出現一次的兩個數字
    def FindNumsAppearOnce(self, array):
        # write code here
        tmp=[]
        for i in array:
            if i in tmp:
                tmp.remove(i)
            else:
                tmp.append(i)
        return tmp 

# -*- coding:utf-8 -*-
class Solution:
    # 返回[a,b] 其中ab是出現一次的兩個數字
    def FindNumsAppearOnce(self, array):
        # write code here
        if not array:
            return []
        tmp=0
        for i in array:
            tmp^=i
        idx=0
        while(tmp&1)==0:
            tmp>>=1
            idx+=1
        a=b=0
        for i in array:
            if self.isbit(i,idx):
                a^=i
            else:
                b^=i
        return [a,b]
    def isbit(self,num,index):
        num=num>>index
        return (num&1)