题目描述:
统计一个数字在排序数组中出现的次数。
代码
class Solution { public: int GetNumberOfK(vector<int> data ,int k) { int len=data.size(); if(len==0) return 0; int i=0,j=len-1,t=0; //二分查找位置 while(i<=j) { t=(i+j)/2; if(data[t]==k) break; else if(data[t]<k) { i=t+1; } else j=t-1; } //若存在,在左右拓展找相同 if(data[t]==k) { int count=1; i=j=t; while(--i>=0&&data[i]==k) count++; while(++j<len&&data[j]==k) count++; return count; } //否则,为0 return 0; } };