import java.util.*; public class Solution { // 数字在升序数组中出现的次数 // 思路:因为数组是升序排列的,所以只需要找到目标值的最左侧索引和最右侧索引就可以找到整个目标值出现的次数 // 因为数组中全是整数,所以可以考虑用二分查找法找到k+0.5和k-0.5出现的位置,两者相减就是k出现的次数 public int GetNumberOfK (int[] nums, int k) { // write code here return binarySearch(nums,k+0.5) - binarySearch(nums,k-0.5); } public int binarySearch(int[] nums, double k){ int left = 0; int right = nums.length - 1; while(left <= right){ int mid = (left + right) / 2; if(nums[mid] < k){ left = mid + 1; }else if(nums[mid] > k){ right = mid - 1; } } return left; } }