137. Single Number II

137. Single Number II

Description

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:

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

Example 2:

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

Constraints:

  • 1 <= nums.length <= 3 * 10^4
  • -2^31 <= nums[i] <= 2^31 - 1
  • Each element in nums appears exactly three times except for one element which appears once .

Hints/Notes

Solution

Language: C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int singleNumber(vector<int>& nums) {
int loner = 0, n = nums.size();
for (int i = 0; i < 32; i++) {
int sum = 0;
for (int j = 0; j < n; j++) {
if ((nums[j] >> i) & 1) {
sum++;
}
}
loner |= (sum % 3) << i;
}
return loner;
}
};