时间限制:1秒 空间限制:32768K 热度指数:187371
本题知识点: 数组
题目描述
统计一个数字在排序数组中出现的次数。
AC code 二分法差找
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size() <= 0)
return 0;
int low = 0;
int high = data.size() - 1;
while(low < high && k != data[(low + high) / 2]){
if(data[(low + high) / 2] > k){
high--;
}else if(data[(low + high) / 2] < k){
low++;
}
}
if(data[(low + high) / 2] == k){
int indexN;
int indexP = indexN = (low + high) / 2;
while(data[indexP] == k)indexP--;
while(data[indexN] == k)indexN++;
return indexN - indexP - 1;
}
return 0;
}
};