哈希表出现 3 次则从
哈希表移除,最后剩下的就是结果
class Solution {
public int singleNumber(int[] nums) {
Map 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;
}
}
本文由 mdnice 多平台发布