LeetCode 137 [Single Number II]

原题

给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。

样例
给出** [1,1,2,3,3,3,2,2,4,1]** ,返回 4

解题思路

  • 方法一:三进制不进位加法,比如02 + 01 = 00 (2+1=3做加法不进位)。所以同一个数,比如7的三进制表示为21,21+21+21 = 00 即十进制下的0。最终代码即统计每一位上1,对3取模
  • 方法二:分别统计,记录出现一次,两次,三次的数

完整代码

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        ones, twos, threes = 0, 0, 0
        for item in A:
            twos |= ones & item      
            ones ^= item          
            threes = ones & twos     

            ones ^= threes         
            twos ^= threes         
        return ones
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容