ZhangZhihui's Blog  

Given an integer array nums where every element appears three times except for one, which appears exactly once. Find the single element and return it.

You must implement a solution with a linear runtime complexity and use only constant extra space.

 

Example 1:

Input: nums = [2,2,3,2]
Output: 3

Example 2:

Input: nums = [0,1,0,1,0,1,99]
Output: 99

 

Constraints:

  • 1 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • Each element in nums appears exactly three times except for one element which appears once.

 

My Solution:

from collections import Counter


class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        counter = Counter(nums)
        for k, v in counter.items():
            if v == 1:
                return k

 

 

ChatGPT's Solution:

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        ones, twos = 0, 0
        for num in nums:
            ones = (ones ^ num) & ~twos
            twos = (twos ^ num) & ~ones
        return ones

 

 

Explanation:

  • ones keeps track of bits that have appeared once.

  • twos keeps track of bits that have appeared twice.

  • When a bit appears the third time, it gets cleared from both ones and twos.

This bit manipulation trick ensures that only the number that appears once remains in ones at the end.

posted on 2025-04-04 11:36  ZhangZhihuiAAA  阅读(20)  评论(0)    收藏  举报