将对应数移到对应位上,如果该位上数与要移动的数相同,就找到了,空间O1
class Solution {
public int findRepeatNumber(int[] nums) {
int len = nums.length;
int i = 0;
while(i != len) {
if(i == nums[i]) {
i++;
} else {
if(nums[i] == nums[nums[i]]) {
return nums[i];
}
swap(nums, i, nums[i]);
}
}
return -1;
}
void swap(int[] nums, int i, int j) {
nums[i] += nums[j];
nums[j] = nums[i] - nums[j];
nums[i] -= nums[j];
}
}