时间限制:1秒 空间限制:32768K 热度指数:299379
本题知识点: 数组
题目描述
统计一个数字在排序数组中出现的次数。
在已经排序好的数组中找某一个数字出现的位置
代码如下:
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size()==0) return 0;
int f;
int a=data[0],b=data.back();
if(a==b&&a==k) return data.size();
else if(a==b&&a!=k) return 0;
else if(a<b){
f=1;//升序排序
}else{
f=2;//降序排序
}
if(f==1){
int i=lower_bound(data.begin(),data.end(),k)-data.begin();
int j=upper_bound(data.begin(),data.end(),k)-data.begin();
return j-i;
}else{
int i=lower_bound(data.begin(),data.end(),k,greater<int>())-data.begin();
int j=upper_bound(data.begin(),data.end(),k,greater<int>())-data.begin();
return i-j;
}
}
};