引入HashMap
class Solution {
public int singleNumber(int[] nums) {
Map<Integer, Integer> countMap = new HashMap<>();
for(int num : nums){
if(!countMap.containsKey(num)){
countMap.put(num, 1);
}else{
countMap.put(num, 2);
}
}
for(Integer num : countMap.keySet()){
if(countMap.get(num) == 1){
return num;
}
}
return -1;
}
}
位运算
其不需要引入任何额外空间,由异或运算的性质得到
- 任何数和 0 做异或运算,结果仍然是原来的数
- 任何数和其自身做异或运算,结果是 0
- 异或运算满足交换律和结合律
class Solution {
public int singleNumber(int[] nums) {
int result = 0;
for (int num : nums) {
result ^= num;
}
return result ;
}
}