int findDuplicate(int* nums, int numsSize) {
int low=1;
int high=numsSize-1;
int mid;
// answer_value 在[low,high]上
while(true){
mid=(low+high)/2;
int smaller=0;
int bigger=0;
for(int i=0;i!=numsSize;++i){
if(mid>nums[i]) smaller++;
if(mid<nums[i]) bigger++;
}
if(smaller>=mid)
high=mid-1;
else if(bigger>=numsSize-mid)
low=mid+1;
else return mid;
}
}
Find the Duplicate Number
最新推荐文章于 2020-04-04 09:16:27 发布