class Solution {
public int duplicateInArray(int[] nums) {
if(nums == null || nums.length == 0 || nums.length == 1) {
return -1;
}
for(int i = 0; i < nums.length; i++) {
if(nums[i] < 0 || nums[i] >= nums.length) {
return -1;
}
}
for(int i = 0; i < nums.length; i++) {
while(i != nums[i]) {
if(nums[i] == nums[nums[i]]) {
return nums[i];
}else {
swap(nums, i, nums[i]);
}
}
}
return -1;
}
public void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
1.注意要先校验每个数字的有效性
2.遍历每一个数字,如果下标和本身不向等就和其他数字替换,直到遇见相同为止