【二分查找】剑指 Offer 53 - I. 在排序数组中查找数字 I

90 阅读1分钟

image.png

class Solution {
    public int search(int[] nums, int target) {
        int l=-1,r=nums.length;
        //找到第一个大于等于target的数
        int left,right;
        while(l+1!=r){
            int mid= l+(r-l)/2;
            if(nums[mid]<target){
                l=mid;
            }else{
                r=mid;
            }
        }
        left = r;

        //找出最后一个小于等于target的数
        l=-1;
        r=nums.length;
        while(l+1!=r){
            int mid= l+(r-l)/2;
            if(nums[mid]<=target){
                l=mid;
            }else{
                r=mid;
            }
        }
        right= l;
        return right-left+1;

    }
}