剑指Offer (二分法的运用)数的出现次数,O(logN)

在这里插入图片描述

class Solution {
    
    
    public int search(int[] nums, int target) {
    
    
        if (nums == null || nums.length == 0) return 0;
        int l = 0,r = nums.length - 1;
        while (l < r) {
    
    
            int mid = l + r >> 1;
            if (nums[mid] >= target) r = mid;
            else l = mid + 1;
        }
        int left = l;
        if (nums[l] != target) return 0;
        else{
    
    
            l = 0;
            r = nums.length - 1;
            while (l < r) {
    
    
                int mid = l + r + 1 >> 1;
                if (nums[mid] <= target) l = mid;
                else r = mid - 1; 
            }
        int right = l;
        int res = right - left + 1;
        return res;
        } 
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Sherlook_Holmes/article/details/121205846