题目描述:
有一个数组长度为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;
}
}