37、 统计一个数字在排序数组中出现的次数 还可以
统计一个数字在升序数组中出现的次数。
示例1
输入
[1,2,3,3,3,3,4,5],3
返回值
4
1、STL中取巧的一种写法,直接调equal_range() 方法
int GetNumberOfK(vector<int> data ,int k) { auto pos = equal_range(data.begin(),data.end(),k); return pos.second - pos.first; }
2、二分法,找到第一次出现的位置和最后一次出现的位置,还是记这种二分法模板吧
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