题目描述:
题解1:
分析:暴力破解:使用双重循环,挨个判断重复的数字。效率太低
class Solution {
public int findRepeatNumber(int[] nums) {
int num;
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]==nums[j]){
return nums[i];
}
}
}
return nums[0];
}
}
题解2:
分析:将待查询数组排序,只需要判断nums[i]==nums[i-1];相等则返回。(我认为这是最优解法)
class Solution {
public int findRepeatNumber(int[] nums) {
Arrays.sort(nums);
for(int i=1;i<nums.length;i++){
if(nums[i]==nums[i-1])
return nums[i];
}
return nums[0];
}
}
题解3:
分析:利用set不可以重复的特性,判断不能添加进集合的元素。
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set=new HashSet<Integer>();
int repeat=-1;
for (int num : nums) {
if(!set.add(num)){
repeat=num;
break;
}
}
return repeat;
}
}