哈希表
出现 3 次则从哈希表
移除,最后剩下的就是结果class Solution {
public int singleNumber(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
Integer integer = map.getOrDefault(num, 0);
if (integer == 2) {
map.remove(num);
} else {
map.put(num, integer + 1);
}
}
for (Integer i : map.keySet()) {
return i;
}
return 0;
}
}
三次
,其中某个元素只出现一次
,将每个元素都转化为二进制
,则可能的结果为 4 个数都相同或者 3 个数都相同0000
、1111
、0001
、1110
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
for (int i = 0; i < 32; i++) {
int sum = 0;
for (int num : nums) {
// 最后一位的值
sum += num >> i & 1;
}
// 将不同的数补到 res 后面
res |= sum % 3 << i;
}
return res;
}
}