1. 程式人生 > >劍指Offer 陣列中唯一隻出現一次的數字

劍指Offer 陣列中唯一隻出現一次的數字

題目:

在一個數組中除了一個數字只出現一次之外,其他數字都出現了三次。請找出那個只出現一次的數字。你可以假設滿足條件的數字一定存在。
思考題:
如果要求只使用 O(n) 的時間和額外 O(1) 的空間,該怎麼做呢?
樣例
輸入:[1,1,1,2,2,2,3,4,4,4]
輸出:3

解答:

import sys
class Solution(object):
    def findNumberAppearingOnce(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
bits = [0] * 32 result = 0 for i in range(len(bits)): for j in range(len(nums)): bits[i] += (nums[j] >> i) & 0b1 bits[i] = (bits[i] % 3) << i result = result | bits[i] return result