数组先排序,这样如果有重复的数字,就会放在一起,这就代表了出现了重复数字
这个时候循环一下,循环的时候if判断一下,返回结果就ok了
循环
if (nums[i]=nums[i+1]){
return 结果;
}
上个伪代码,但是,leecode不给你导包,Array.sort(数组)是在java.util的内容。so这个方法就不太行了
class Solution {
public int findRepeatNumber(int[] nums) {
Array.sort(nums);
for (int i = 0; i < nums.length; i++) {
if (nums[i]=nums[i+1]){
return 2;
}
}
return 0;
}
}
2.0版本思路(Leecode官方解法)
既然要排序,那么集合就很香了,利用Set接口下集合无序不可重复的特性,就用HashSet
里面有个add方法,我们利用好特性:如果添加重复元素就会返回false
原先for循环中的if判断此时就用add方法中添加失败取反的方法来进行替换
不难看出,如果添加失败了就代表有重复元素了
if (!hashSet.add(nums[i])){
return 目标元素;
}
直接上题解
class Solution {
public int findRepeatNumber(int[] nums) {
//利用HashSet的无序不可重复的特性
HashSet hashSet = new HashSet();
//遍历将数组加入HashSet,来观察是否添加成功
for (int i = 0; i < nums.length; i++) {
if (!hashSet.add(nums[i])){
//如果添加不进去了就代表里面已经有一个元素了,重复了
//返回题目要求的重复元素
return nums[i];
}
}
return 0;
}
}



