首页 > 编程语言 > 详细

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

时间:2020-06-09 21:45:09      阅读:30      评论:0      收藏:0      [点我收藏+]

题目:

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

代码:

 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,后再用二分查找法去寻找,最后将上限返回值 - 下限返回值就可以求得出现次数。

技术分享图片

技术分享图片

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

原文:https://www.cnblogs.com/john1015/p/13080721.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!