Given an array nums
containing n
+ 1
integers where each integer is between 1
and n
(inclusive),
prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.
注意事项
- You must not modify the array (assume the array is read only).
- You must use only constant, O(1) extra space.
- Your runtime complexity should be less than O(n^2).
- There is only one duplicate number in the array, but it could be repeated more than once.
样例
Given nums
= [5,5,4,3,2,1]
return 5
Given nums
= [5,4,4,3,2,1]
return 4
public class Solution {
/**
* @param nums an array containing n + 1 integers which is between 1 and n
* @return the duplicate one
*/
public int findDuplicate(int[] nums) {
// Write your code here
if(nums.length<2){
return -1;
}
Arrays.sort(nums);
for(int i=1;i<nums.length;i++){
if(nums[i]==nums[i-1])
return nums[i];
}
return -1;
}
}