直接做,排序,然后遍历一次前后比较
class Solution {
public int findRepeatNumber(int[] nums) {
Arrays.sort(nums);
int res = -1;
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]) {
res = nums[i];
break;
}
}
return res;
}
}
大佬思路
如果没有重复数字,那么正常排序后,数字i应该在下标为i的位置,所以思路是重头扫描数组,遇到下标为i的数字如果不是i的话,(假设为m),那么我们就拿与下标m的数字交换。在交换过程中,如果有重复的数字发生,那么终止返回ture