137. Single Number II
Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,3,2]
Output: 3
Example 2:
Input: [0,1,0,1,0,1,99]
Output: 99
int singleNumber(vector<int>& nums) { // time: O(n); space: O(1)
int res = 0; // 32 bit integer
for (int i = 0; i < 32; ++i) {
int sum = 0;
for (int num : nums) {
sum += (num >> i) & 1;
}
res |= (sum % 3) << i;
}
return res;
}
int singleNumber(vector<int>& nums) { // time: O(n); space: O(1)
int twos = 0, ones = 0;
for (int num : nums) {
ones = (ones ^ num) & ~twos;
twos = (twos ^ num) & ~ones;
}
return ones;
}
Last updated
Was this helpful?