classSolution { Public: intLowindex (vector<int>&data,intKintLowintHigh ) { if(low<High ) { inti=low,j=High ; intMid= (I+J)/2; if(data[mid]>k)returnLowindex (data,k,low,mid-1); if(data[mid]<k)returnLowindex (data,k,mid+1, high); if(data[mid]==k&& (mid==0|| data[mid-1]!=k))returnmid; Else returnLowindex (data,k,low,mid-1); } Else returnLow ; } intHighindex (vector<int>&data,intKintLowintHigh ) { if(low<High ) { inti=low,j=High ; intMid= (I+J)/2; if(data[mid]>k)returnLowindex (data,k,low,mid-1); if(data[mid]<k)returnLowindex (data,k,mid+1, high); if(data[mid]==k&& (Mid==data.size ()-1|| Data[mid+1]!=k))returnmid; Else returnHighindex (data,k,mid+1, high); } Else returnLow ; } intGETNUMBEROFK (vector<int> Data,intk) {if(Data.empty ())return 0; intLow =lowindex (Data,k,0, Data.size ()-1); intHigh =highindex (Data,k,0, Data.size ()-1); if(low==high&&data[low]!=k)return 0; intdis=high-low+1; returndis; }};
Number of occurrences of the number in the sorted array