题目:数字在排序数组中出现的次数
题目描述
统计一个数字在排序数组中出现的次数。
思路
①因为数组是int类型,所以二分查找k+0.5 - k-0.5就是答案
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
return binary_search(data,k+0.5)-binary_search(data,k-0.5);
}
int binary_search(vector<int> &data, double num){
int s = 0, e = data.size()-1;
while(s<=e){
int mid = (s+e)/2;
if(data[mid]>num) e = mid-1;
else s = mid+1;
}
return s;
}
};
②善于用STL
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int pos1 = upper_bound(data.begin(), data.end(),k)-data.begin();//返回数组中第一个 > K 的值
int pos2 = lower_bound(data.begin(), data.end(),k)-data.begin();//返回数组中第一个 >或= K 的值
return pos1-pos2;
}
};