题目描述:
解法1:
一开始想到的就是使用数组排序的方法。数组排序过后,遍历数组,如果数组中存在某个数和它后一个数相同,则证明存在重复数字。
class Solution{
public int findRepeatNumber(int[] nums) {
int a=-1;
Arrays.sort(nums);
for(int i=0;i<nums.length-1;i++){
if(nums[i]==nums[i+1]){
a=nums[i];break;
}
}
return a;
}
}
解法2:
后面看了题解,发现利用set集合也可以做到轻松判断。遍历数组,不断往set集合加数组元素,因为set集合不能有重复值,所以当添加失败时,返回此元素即可。但是这种方法在运行上和内存占用上都没有第一种方法好。
class Solution{
public int findRepeatNumber(int[] nums) {
Set<Integer> set=new HashSet<>();
for(int num:nums){
if(!set.add(num)) return num;
}
return -1;
}
}