52.数组中重复的数字

题目描述:

  有一个数组长度为n,里面元素的值都在0-n-1之间,有的元素会重复出现,有的元素不会,请找出任意一个重复出现的元素,并输出它,如果有多个,则输出第一个。

思路分析:

  使用map保存每个数字的值和它对应出现的次数,然后遍历数组,查看元素的次数如果大于1则输出。

代码:

import java.util.HashMap;

public class Test{
    public int duplicateNumber(int []nums){
        int res=-1;
        if(nums==null||nums.length==0)
            return -1;
        HashMap<Integer,Integer>map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i])){
                int count=map.get(nums[i]);
                count++;
                map.put(nums[i],count);
            }else
                map.put(nums[i],1);
        }
        for(int i=0;i<nums.length;i++){
            if(map.get(nums[i])>1){
                res=nums[i];
                break;
            }
        }
        return res;
    }
}
原文地址:https://www.cnblogs.com/yjxyy/p/10935661.html