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

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

#代码

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