题目描述
解题思路:
其实这道题和它的下一题都是大同小异的,一个是目标元素只有一个,一个是目标元素有两个。使用常规解法,通过HashMap去解决它。遍历数组,把数组元素出现的次数存储在HashMap中。然后遍历HashMap,发现出现次数为1的元素,则添加到新数组里,最后返回新数组即可。但是这种解法,运行速度慢。
代码实现:
class Solution {
int count = 0;
public int[] singleNumbers(int[] nums) {
int[] res = new int[2];
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
if(map.containsKey(nums[i])) map.put(nums[i], map.get(nums[i])+1);
else map.put(nums[i], 1);
}
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
if(entry.getValue() == 1){
res[count] = entry.getKey();
count++;
}
}
return res;
}
}
执行结果: