二分查找目标数字的右边界+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; } }