137. Single Number II——问题是查找,本质是hash查找,只是记录的是32 bit中各个位出现次数而已

Given an array of integers, every element appears three times except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        ans = 0
        for i in range(32):
            mask = 1 << i
            cnt = 0
            for num in nums:
                if mask & num:
                    cnt += 1
            if cnt % 3:
                if i == 31:
                    ans = -(1<<31) + ans
                else:
                    ans = ans | mask
        return ans

 

posted @ 2017-01-02 21:15  bonelee  阅读(205)  评论(0编辑  收藏  举报