動機
是誰想到用bit去統計的
Problem
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.
Sol
記下每位位元的1出現幾次,如果到了三次就要把前面的劃掉
class Solution:
def singleNumber(self, nums: List[int]) -> int:
one = two = three = 0
for n in nums:
two = two | (one & n)
one = one ^ n
three = one & two
one = one & ~three
two = two & ~three
return one