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
numsappears 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:
-
oneskeeps track of bits that have appeared once. -
twoskeeps track of bits that have appeared twice. -
When a bit appears the third time, it gets cleared from both
onesandtwos.
This bit manipulation trick ensures that only the number that appears once remains in ones at the end.

浙公网安备 33010602011771号