1. 程式人生 > 其它 >劍指 Offer 53 - I. 在排序陣列中查詢數字 I(二分查詢)

劍指 Offer 53 - I. 在排序陣列中查詢數字 I(二分查詢)

劍指 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 };