53. 数字在排序数组中出现的次数

NowCoder

题目描述

  1. Input:
  2. nums = 1, 2, 3, 3, 3, 3, 4, 6
  3. K = 3
  4. Output:
  5. 4

解题思路

  1. public int GetNumberOfK(int[] nums, int K) {
  2. int first = binarySearch(nums, K);
  3. int last = binarySearch(nums, K + 1);
  4. return (first == nums.length || nums[first] != K) ? 0 : last - first;
  5. }
  6. private int binarySearch(int[] nums, int K) {
  7. int l = 0, h = nums.length;
  8. while (l < h) {
  9. int m = l + (h - l) / 2;
  10. if (nums[m] >= K)
  11. h = m;
  12. else
  13. l = m + 1;
  14. }
  15. return l;
  16. }

53. 数字在排序数组中出现的次数 - 图1