【剑指offer-解题系列(38)】数字在排序数组中出现的次数
来源:互联网 发布:stc单片机isp原理 编辑:程序博客网 时间:2024/05/12 17:21
题目描述
统计一个数字在排序数组中出现的次数。
分析
实现二分查找的upper函数和lower函数
代码实现
int GetNumberOfK(vector<int> data ,int k) {
if(data.size()<=0)
return 0;
int a=lower( data , k, 0, data.size()-1);
if(a==-1)
return 0;
int b=upper( data , k, 0, data.size()-1);
return b-a+1;
}
int upper(vector<int> &data ,int k, int start, int end){
if(start == end ){
if(data[end] == k)return end;
else return -1;
}
int mid = (start + end)/2;
if( data[mid] > k )return upper( data , k , start, mid);
if( data[mid] < k )return upper( data , k , mid+1, end);
if( data[mid] == k ){
if( mid<end&&data[mid+1]!=k )
return mid;
else
return upper( data , k , mid+1, end);
}
return -1;
}
int lower(vector<int> &data ,int k, int start, int end){
if(start == end ){
if(data[end] == k)return end;
else return -1;
}
int mid = (start + end)/2;
if( data[mid] > k )return lower( data , k , start, mid);
if( data[mid] < k )return lower( data , k , mid+1, end);
if( data[mid] == k ){
if( mid>start&&data[mid-1]!=k )
return mid;
else
return lower( data , k , start, mid);
}
return -1;
}
- 【剑指offer-解题系列(38)】数字在排序数组中出现的次数
- 剑指Offer系列-面试题38:数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer--数字在排序数组中出现的次数
- 《剑指offer》数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer 数字在排序数组中出现的次数
- [剑指offer]数字在排序数组中出现的次数
- 剑指offer|数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 《剑指offer》-数字在排序数组中出现的次数
- 剑指offer - 数字在排序数组中出现的次数
- 剑指offer-数字在排序数组中出现的次数
- 【剑指offer】数字在排序数组中出现的次数
- 剑指offer:数字在排序数组中出现的次数
- software architecture 看到这篇文章不错
- 全方位玩转Windows 10 Bash 子系统Ubuntu
- mt6735电池状态监测
- JSON Web Tokens介绍
- 七夕节
- 【剑指offer-解题系列(38)】数字在排序数组中出现的次数
- (POJ 1990)MooFest 树状数组 求一个数和他前面的所有数的值的差值之和
- \r与\n
- Spring的bean管理(注解创建对象)
- [一天几个linux命令] umask
- 数据结构之队列
- struts2+hibernate学习之实现网站留言板和好友互相添加功能
- PHP 编码函数
- JavaScript/Ajax/JQuery知识点(BOM/DOM/ScriptEngine/JS引擎)