Q****137. Single Number II
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.
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.
Follow up: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
解法及注释
class Solution {
public int singleNumber(int[] nums) {
int a = 0, b = 0;
for(int i : nums) {
a = ~b & (a ^ i);
b = ~a & (b ^ i);
}
return a;
}
}