剑指 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 };
复制代码

 

posted @   跳动的休止符  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示