数字在排序数组中出现的次数
class Solution { public: int lowindex(vector<int>&data,int k,int low,int high) { if(low<high) { int i=low,j=high; int mid=(i+j)/2; if(data[mid]>k) return lowindex(data,k,low,mid-1); if(data[mid]<k) return lowindex(data,k,mid+1,high); if(data[mid]==k&&(mid==0||data[mid-1]!=k)) return mid; else return lowindex(data,k,low,mid-1); } else return low; } int highindex(vector<int>&data,int k,int low,int high) { if(low<high) { int i=low,j=high; int mid=(i+j)/2; if(data[mid]>k) return lowindex(data,k,low,mid-1); if(data[mid]<k) return lowindex(data,k,mid+1,high); if(data[mid]==k&&(mid==data.size()-1||data[mid+1]!=k)) return mid; else return highindex(data,k,mid+1,high); } else return low; } int GetNumberOfK(vector<int> data ,int k) { if(data.empty())return 0; int low =lowindex(data,k,0,data.size()-1); int high =highindex(data,k,0,data.size()-1); if(low==high&&data[low]!=k) return 0; int dis=high-low+1; return dis; } };