数字在排序数组中出现的次数

来源:互联网 发布:州立大学 知乎 编辑:程序博客网 时间:2024/06/09 21:00

统计一个数字在排序数组中出现的次数。

class Solution {public: int GetNumberOfK(vector<int> data ,int k) {        int number=0;        int start=0;        int end=data.size()-1;               if(data.size()!=0){            int first=GetFirstK(data,k,start,end);         int last=GetLastK(data,k,start,end);                if(first>-1&&last>-1)              number=last-first+1;        }               return number; }       int GetFirstK(vector<int> data ,int k,int start,int end){        if(start>end)            return -1;               int middleIndex=(start+end)/2;        int middleData=data[middleIndex];               if(middleData==k){            if((middleIndex>0&&data[middleIndex-1]!=k)||middleIndex==0)                return middleIndex;            else                end=middleIndex-1;        }        else if(middleData>k)            end=middleIndex-1;        else            start=middleIndex+1;                   return GetFirstK(data,k,start,end);    }       int GetLastK(vector<int> data ,int k,int start,int end){        if(start>end)            return -1;        int middleIndex=(start+end)/2;        int middleData=data[middleIndex];               if(middleData==k){            if((middleIndex<data.size()-1&&data[middleIndex+1]!=k)||middleIndex==data.size()-1)                return middleIndex;            else                start=middleIndex+1;        }        else if(middleData<k)            start=middleIndex+1;        else            end=middleIndex-1;                   return GetLastK(data,k,start,end);           }};


0 0