题目描述:

解法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;
}
}

本文探讨了两种有效的算法来查找数组中重复的数字。一种是通过数组排序后比较相邻元素,另一种是利用set集合的特性进行判断。前者在运行效率和内存占用方面表现更优。
806

被折叠的 条评论
为什么被折叠?



