此博客连接:https://www.cnblogs.com/ping2yingshi/p/14045519.html
只出现一次的数字
题目链接:https://leetcode-cn.com/problems/single-number/submissions/
题目
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
知识
哈希表是以(key,value)形式来存储数据,当你想找某个key下的value值时,通过哈希表中的对应关系来找value的值。
思想
把不同的数字当成key值,把每个数字的个数当成value的值,然后判断value中哪个值为1,返回对应的key值。
方法
1.先把数组中不同的数字存到哈希表的key中。
2.计算数组中不同数字的个数,存到哈希表的value中。
3.判断哪个vlaue的值为1。
4.返回value为1的key的值。
代码
class Solution { public int singleNumber(int[] nums) { Map<Integer,Integer> map=new HashMap();//创建哈希表 int len=nums.length; //创建哈希表 for(Integer temp:nums) { Integer count=map.get(temp);//获取到i对应的value if(count==null) { map.put(temp,1); } else{ map.put(temp,++count); } } //判断 for(Integer i:map.keySet()) { Integer count=map.get(i); if(count==1) { // int result=map.keySet(i); return i; } } return -1; } }
java中竟然没有foreach()这个循环,使用for(l类型 name:遍历的变量)。