题目描述:
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例:
思路分析:
一个数组中在只要遇到一个重复数字就返回该数字,那后面是否还有重复数字不许用考虑。那么遇到重复数字问题,我们可以想到用Set集合,set集合不允许出现重复数字,在使用add()方法对set集合进行添加元素时,如果出现了重复数字,则返回false。
根据上面思路,代码如下:
public int findRepeatNumber(int[] nums) {
Set<Integer> integers = new HashSet<>();
int repat = -1;
for (int i = 0; i < nums.length; i++) {
if (!integers.add(nums[i])){
repat = nums[i];
return repat;
}
}
return repat;
}