统计一个数字在排序数组中出现的次数。
既然数组有序,考虑二分查找。
记录一下实现细节,剑指offer中使用的递归形式,我的代码用循环实现。
- 循环的条件用start和end相对大小来控制,这也是二分查找的原始控制条件。
- 在寻找第一个k的时候,如果mid已经是k,但是这个数之前也是k,说明这并不第一个k,此时应该向数组左半部去查,寻找最后一个k正好反过来,应该向右半部去查。
int getFirstK(vector<int> data ,int k)
{
int start = 0;
int end = data.size()-1;
int mid = (start+end)/2;
while(start <= end)
{