排序数组中查找数字的个数

二分查找目标数字的右边界+1的index以及比目标数字少1的数字的右边界+1,两者相减即为数字的个数

public class Solution {
    public int search(int[] nums, int target) {
        return find(nums, target) - find(nums, target-1);
    }

    private int find(int[] nums, int target) {//找比target大1的元素的位置,不存在就返回两个边界之一
        int i = 0;
        int j = nums.length-1 ;
        while (i<=j) {
            int mid = (i+j)/2;
            if(nums[mid] <= target) {
                i = mid+1;// 保证了i一定是大于target的第一个元素
            } else {
                j = mid-1 ;
            }
        }

        return i;
    }
}
原文地址:https://www.cnblogs.com/iamzhoug37/p/12952986.html