本算法来源与leetCode的一道题目 《只出现一次的数字》(中等难度)
思路是使用哈希映射统计数组中每个元素的出现次数。对于哈希映射中的每个键值对,键表示一个元素,值表示其出现的次数。
然后用Map.Entry遍历哈希表来获得只出现了一次的元素
非常简单,代码如下
public static int singleNumber(int[] nums) {
HashMap<Integer, Integer> num = new HashMap<>();
//使用哈希映射统计数组中每个元素的出现次数。对于哈希映射中的每个键值对,键表示一个元素,值表示其出现的次数。
for (int key:nums) num.put(key,num.getOrDefault(key,0)+1);
//使用Map.Entry遍历num哈希表来获得只出现了一次的元素
for (Map.Entry<Integer, Integer> temp : num.entrySet()) {
// System.out.println("num key= " + temp.getKey() + " and value= " + temp.getValue());
if (temp.getValue() == 1)return temp.getKey();
}
return 0;
}
结果如下
通过本题可以学习到foreach的应用,HashMap的基本使用方式,遍历方式,以及对数据结构的一定了解,用来练手还是很不错的。
一开始想了很久,然后参考了官方的解法才慢慢写出来的。