Description
https://leetcode.com/problems/single-number-ii/
题目大意:
给定一个数组,所有元素都出现三次,除了一个元素只出现一次,找出这个只出现一次的元素。要求时间复杂度O(n),空间复杂度O(1)。
Solving Ideas
Solution
class Solution {
public int singleNumber(int[] nums) {
//k=3, p=1, so m=2
int x1 = 0, x2 = 0, mask;
for (int num : nums) {
x2 ^= x1 & num;
x1 ^= num;
mask = ~(x1 & x2);
x2 &= mask;
x1 &= mask;
}
return x1;
}
}