陣列中只出現一次的數 python
阿新 • • 發佈:2018-12-22
看了網上的解法,對於兩兩出現的數,我應該想到使用異或,我們先計算整個陣列的異或值,那麼最後結果其實就是兩個不一樣的數的異或的結果(因為其他的都兩兩消除了),然後我們根據這個值的最後為1的位,來來講這個陣列進行分類,得到的兩個陣列,在自己進行異或就分別得到了兩個不一樣的值,程式碼如下:
# -*- coding:utf-8 -*- class Solution: # 返回[a,b] 其中ab是出現一次的兩個數字 def FindNumsAppearOnce(self, array): # write code here result = 0 r1 = 0 r2 = 0 for i in array: result ^= i s = bin(result) index = -1 j = -1 for i in s[::-1]: if i == '1': index = j break j -= 1 l1 = [] l2 = [] for i in array: if bin(i)[index] == '1': l1.append(i) else: l2.append(i) for i in l1: r1 ^= i for i in l2: r2 ^= i return r1,r2