剑指offer 数字在排序数组中出现的次数

题目:

统计一个数字在排序数组中出现的次数。(可能出现重复状况)

代码:

复制代码
 1 class Solution {
 2 public:
 3     int GetNumberOfK(vector<int> data ,int k) {
 4         return CountK(data,k+0.5) - CountK(data,k-0.5);
 5     }
 6     int CountK(vector<int> data, double num) {
 7         int left = 0, right = data.size() - 1;
 8         while(left <= right){
 9             int mid = (left + right) /2;
10             if(data[mid] < num) left = mid + 1;
11             else if(data[mid] > num) right = mid - 1;
12         }
13         return left;
14     }
15 };
复制代码

我的笔记:

  由于本题查找的数字可能存在重复的情况,所以在这里将数字区间定为 k-0.5 - k+0.5,后再用二分查找法去寻找,最后将上限返回值 - 下限返回值就可以求得出现次数。

posted @   John_yan15  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示