小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
1. 题目
260.只出现过一次的数字
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按任意顺序返回答案。
2. 问题分析解决
2.1.哈希表法
数组元素作为 key 值,value 设置为数组元素出现次数,每次添加的时候查询下是否已经保存过,如果保存过就 +1, 最后从 Map 中遍历所有 value 为 1 的元素就是答案。
class Solution {
public int[] singleNumber(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int cur = map.get(nums[i]) == null ? 1 : 2;
map.put(nums[i], cur);
}
int[] result = new int[2];
int cnt = 0;
for (Integer key : map.keySet()) {
if (map.get(key) == 1) {
result[cnt++] = key;
}
}
return result;
}
}