统计一个数字在升序数组中出现的次数。
输入
[1,2,3,3,3,3,4,5],3
返回值
4
int GetNumberOfK(vector<int> data ,int k) {
auto pos = equal_range(data.begin(),data.end(),k);
return pos.second - pos.first;
}low<=high low = mid+1,high = mid-1;
运行时间:2ms 占用内存:504k
int GetNumberOfK(vector<int> data, int k) {
int low = 0, high = data.size() - 1;
if (high == -1) return 0;//data为空
while (low <= high) {
int mid = low + (high - low)/2;
if (data[mid] > k) high = mid -1 ;
else if (data[mid] < k) low = mid + 1;
else {//已经找到
int count = 0;
count++;
int index = mid-1;
while (index >= 0 && data[index] == k) {
count++;
index--;
}
index = mid + 1;
while (index <=data.size()-1&& data[index] == k) {
count++;
index++;
}
return count;
}
}
return 0;//没有找到,直接返回 0 吧
}