LC 287 Find the Duplicate Number(M)
解题思路 2分查找, 或 环形查找
public int findDuplicate(int[] nums) {
if(nums.length<2)
return 0;
int min = 0;
int max = nums.length -1;
while(min<= max){
// 取 中值
int mid = min + (max - min) /2;
int count = 0;
for(int i = 0; i < nums.length; i++){
//统计有多少小于中值
if(nums[i]<=mid){
count ++;
}
}
if(count > mid){
max = mid-1;
}else{
min = mid +1;
}
}
return min;
}Last updated