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.
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.
Single Number II Solutions
✅Time: O(32n)=O(n)
✅Space: O(1)
C++
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans = 0;
for (int i = 0; i < 32; ++i) {
int sum = 0;
for (const int num : nums)
sum += num >> i & 1;
sum %= 3;
ans |= sum << i;
}
return ans;
}
};
Java
class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for (int i = 0; i < 32; ++i) {
int sum = 0;
for (final int num : nums)
sum += num >> i & 1;
sum %= 3;
ans |= sum << i;
}
return ans;
}
}
Python
class Solution:
def singleNumber(self, nums: List[int]) -> int:
ones = 0
twos = 0
for num in nums:
ones ^= num & ~twos
twos ^= num & ~ones
return ones
Watch Tutorial
Checkout more Solutions here