题目网址:https://leetcode-cn.com/problems/single-number/
跟我之前写的一篇文件类似,揪出单身狗
这道题的题目也是类似
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
例如
输入: [2,2,1]
输出: 1
方法一:按位异或的方法:
根据题目的特殊性,只有一个元素出现一次,其余元素均出现两次,可以用按位异或来解决
class Solution {
public int singleNumber(int[] nums) {
int result = 0;
for(int x : nums){
result ^= x;
}
return result;
}
}
原理:异或:相同为0,相异为1
异或具有交换性
方法二:根据Map的键值对思想来解决
class Solution {
public int singleNumber(int[] nums) {
Map<Integer,Integer> map = new HashMap<>();
for(int x : nums){
//将nums的值都填入到map中
int count = map.getOrDefault(x,0);//如果没出先就是默认值0
map.put(x,count + 1);
}
int result = 0;
for (Map.Entry<Integer,Integer> entry : map.entrySet()){
if(entry.getValue() == 1){
result = entry.getKey();
}
}
return result;
}
}