- 描述
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
- 示例 1:
输入:nums = [3,4,3,3]
输出:4
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
- 限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
- Solution One
HashCounter
class Solution {
public int singleNumber(int[] nums) {
int res = 0;
Map<Integer,Integer> map = new HashMap<>();
for(int i : nums){
if(map.containsKey(i)){
map.put(i,map.get(i) + 1);
}else{
map.put(i,1);
}
}
for (Map.Entry<Integer,Integer> entry : map.entrySet()){
if(entry.getValue() == 1){
res = entry.getKey();
}
}
return res;
}
}
- Solution Two
没看懂的写法
class Solution {
public int singleNumber(int[] nums) {
int a = 0,b =0;
for(int i:nums){
b = ~a&(b^i);
a = ~b&(a^i);
}
return b;
}
}