劍指 Offer 53 - I. 在排序陣列中查詢數字 I(二分查詢)
阿新 • • 發佈:2022-05-28
劍指 Offer 53 - I. 在排序陣列中查詢數字 I
統計一個數字在排序陣列中出現的次數。
示例 1:
輸入: nums = [5,7,7,8,8,10]
, target = 8
輸出: 2
示例 2:
輸入: nums = [5,7,7,8,8,10]
, target = 6
輸出: 0
提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
-
nums
是一個非遞減陣列 -109 <= target <= 109
注意:本題與主站 34 題相同(僅返回值不同):https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
1 class Solution { 2 public: 3 int findRightBoundary(vector<int> &nums, int target) { 4 int left = 0; 5 int right = nums.size() - 1; 6 while (left <= right) { 7 int mid = left + (right - left) / 2; 8 if (nums[mid] <= target) {9 left = mid + 1; 10 } else { 11 right = mid - 1; 12 } 13 } 14 return left; 15 } 16 int search(vector<int>& nums, int target) { 17 return findRightBoundary(nums, target) - findRightBoundary(nums, target - 1); 18 } 19 };