二分查找


二分查找专题

LC287 寻找重复数

class Solution {
    public int findDuplicate(int[] nums) {
        //抽屉原理二分
        int left=0,right=nums.length-1;
        while (left<right){
            int mid=left+(right-left)/2;
            int count=0;
            for(int i=0;i){
                if(nums[i]<=mid){
                    count++;
                }
            }
            if(count>mid){
                right=mid;
            }else {
                left=mid+1;
            }
        }
        return left;

    }
}

相关