【剑指offer】统计一个数字在排序数组中出现的次数
来源:互联网 发布:半条命2剧情知乎 编辑:程序博客网 时间:2024/06/05 10:26
class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int number = 0; if(data.size() == 0) return number; int first = GetFirstOfK(data,k,0,data.size()-1); int last = GetLastOfK(data,k,0,data.size() - 1); if(first > -1 && last > -1) return last - first + 1; return number; } int GetFirstOfK(vector<int> &data,int k,int low,int high){ while(low <= high){ int mid = (low + high) / 2; if(data[mid] == k){ if(mid == 0 || (mid > 0 && data[mid-1] != k)){ return mid; }else{ high = mid - 1; } }else if(data[mid] > k){ high = mid - 1; }else{ low = mid + 1; } } return -1; } int GetLastOfK(vector<int> &data,int k,int low,int high){ while(low <= high){ int mid = (low + high) / 2; if(data[mid] == k){ if( (mid == data.size() - 1) || ((mid < data.size() - 1) && data[mid+1] != k)){ return mid; }else{ low = mid + 1; } }else if(data[mid] > k){ high = mid - 1; }else{ low = mid + 1; } } return -1; }};
统计一个数字k在排序数组中出现的次数。
思路:找到第一个K位置,找到最后一个K的位置,然后相减加一。利用二分查找。
0 0
- 剑指offer-38 统计一个数字在排序数组中出现的次数
- 《剑指Offer》面试题:统计一个数字在排序数组中出现的次数
- 【剑指offer】统计一个数字在排序数组中出现的次数
- 剑指offer-统计一个数字在排序数组中出现的次数-PHP
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- oracle、sqlserver及mysql数据库版本查看
- 数据结构实践——顺序表的基本运算
- 程序员求职成功路(3)
- 编译hadoop的eclipse插件hadoop-eclipse-plugin
- PLS-00363: expression 'v_s' cannot be used as an assignment target
- 【剑指offer】统计一个数字在排序数组中出现的次数
- C++Primer第五版 4.4节练习
- Android自定义圆形进度条
- Spring MVC file upload example
- 第3周(项目1)顺序表的基本运算
- web_cache_server --> Varnish
- 创建一个WCF Rest Service
- 第2周项目3 体验复杂度(1)两种排序算法的运行时间
- 第二周项目3复杂度体验1 两种排序算法的运行时间