数字在排序数组中出现的次数
来源:互联网 发布:中走丝hf凹模编程视频 编辑:程序博客网 时间:2024/04/30 03:33
题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。
关键词:
二分查找
class Solution{public: int GetNumberOfK( vector<int> data, int k ) { int number = 0; if ( data.empty() ) return 0; int first = GetFirstK( data, k, 0, data.size()-1 ); int last = GetLastK( data, k, 0, data.size()-1 ); if ( first > -1 && last > -1 ) number = last - first + 1; return number; } int GetFirstK( vector<int> data, int k, int start, int end ) { if ( start > end ) return -1; int mid = ( start + end ) / 2; if ( data[mid] == k ) { if ( (mid > 0 && data[mid-1] != k) || mid == 0 ) return mid; else end = mid-1; } else if ( data[mid] < k ) { start = mid+1; } else end = mid-1; return GetFirstK( data, k, start, end ); } int GetLastK( vector<int> data, int k, int start, int end ) { if ( start > end ) return -1; int mid = ( start + end ) / 2; if ( data[mid] == k ) { if ( (mid < data.size()-1 && data[mid+1] != k) || mid == data.size()-1 ) return mid; else start = mid+1; } else if ( data[mid] < k ) { start = mid+1; } else { end = mid-1; } return GetLastK( data, k, start, end ); }};int main( void ){ Solution sos; vector<int> data = { 1, 2, 3, 3, 3, 3, 4, 5 }; cout << sos.GetNumberOfK( data, 3 ) << endl; return 0;}
阅读全文
0 0
- 【数组8】数字在排序数组中出现的次数
- 【数组4】数字在排序数组中出现的次数
- 数组9:数字在排序数组中出现的次数
- 数字在排序数组中出现的次数(数组)
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 统计一个数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- mysql数据查询优化。
- iOS自适应手机语言的国家&国旗列表
- Myeclipse的tomcat配置(详细配图)
- string
- 从入门到入门-Spring Boot-Controller
- 数字在排序数组中出现的次数
- HDU 1728 逃离迷宫 + HDU 1072 Nightmare
- 堆排序
- groovy上手
- 搏击下半场,东原地产博鳌再获殊荣
- hdu 4552 湫湫系列故事——过年回家 腾讯马拉松~~~~
- SQL function函数
- Activity与Fragment之间的交互(三)
- Redis介绍与安装