剑指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 @ 2020-06-09 21:01  John_yan15  阅读(108)  评论(0编辑  收藏  举报