class Solution {
public int singleNumber(int[] nums) {
int[] arr = new int[32];
for (int num : nums) {
for (int i = 0; i < 32; i++) {
arr[31 - i] += num & 1;
num >>>= 1;
}
}
int ans = 0, m = 3;
for (int i = 0; i < 32; i++) {
ans <<= 1;
ans |= arr[i] % m;
}
return ans;
}
}
- 方法二状态机位运算
public int singleNumber(int[] nums) {
int ones = 0, twos = 0;
for (int num : nums) {
ones = ones ^ num & ~twos;
twos = twos ^ num & ~ones;
}
return ones;
}