首页 > 技术文章 > 只出现一次的数字

ping2yingshi 2020-11-27 00:04 原文

此博客连接: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:遍历的变量)。

推荐阅读