美文网首页
[leetcode137]只出现一次的数字 II

[leetcode137]只出现一次的数字 II

作者: 欢仔_159a | 来源:发表于2023-10-24 20:31 被阅读0次

    题目:
    给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

    你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

    参考代码:

        def singleNumber(self, nums: List[int]) -> int:
            ans = 0
            for i in range(32):
                total = sum((num >> i) & 1 for num in nums)
                if total % 3:
                    # Python 这里对于最高位需要特殊判断
                    if i == 31:
                        ans -= (1 << i)
                    else:
                        ans |= (1 << i)
            return ans
    

    本人的漂亮烂代码:

    反思:

    1. 想不出来。
    2. 主要是有符号数的处理:最高位是符号位,只要最高位有数,则说明最高位是负号。----还是不理解。
    3. 多个数的每个相同位相加:sum((num>>i)&1 for num in nums)

    相关文章

      网友评论

          本文标题:[leetcode137]只出现一次的数字 II

          本文链接:https://www.haomeiwen.com/subject/bwgibdtx.html