【LeetCode】第20天 - 260. 只出现一次的数字 III
原创
©著作权归作者所有:来自51CTO博客作者1加1等于王的原创作品,请联系作者获取转载授权,否则将追究法律责任
260. 只出现一次的数字 III
题目描述

解题思路
法一、直接比较(代码实现注释部分)
先对数组元素进行排序,然后遍历数组剔除重复元素。
法二、哈希表(代码实现)
- 使用一个哈希映射统计数组中每一个元素出现的次数。(key为nums[i],value为出现的次数)
- 对哈希映射进行遍历,将所有只出现了一次的数放入答案中。
代码实现
class Solution {
public int[] singleNumber(int[] nums) {
// int[] result = new int[2];
// Arrays.sort(nums);
// int count = 0;
// if(nums[0] != nums[1]){ //判断第一个元素是否重复
// result[count] = nums[0];
// ++count;
// }
// if(nums[nums.length-1] != nums[nums.length-2]){
// result[count] = nums[nums.length-1]; /判断最后一个元素是否重复
// ++count;
// }
// for(int i=1;i<nums.length;i++){
// if(count == 2){
// break;
// }
// if(nums[i]!=nums[i-1] && nums[i]!=nums[i+1]){ //判断中间位置元素是否重复
// result[count] = nums[i];
// ++count;
// }
// }
// return result;
int[] result = new int[2];
int count = 0;
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
//getOrDefault(Object key, V defaultValue)方法是Map接口下的一个方法。
//作用:当 Map 集合中有这个 key 时,就使用这个 key 值;如果没有就使用默认值 defaultValue
map.put(nums[i],map.getOrDefault(nums[i],0)+1); //遍历数组统计没得数字出现的次数
}
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
if(entry.getValue() == 1){ //获取只出现一次的元素
result[count++] = entry.getKey();
}
if(count == 2){
break;
}
}
return result;
}
}