class Solution {public:int GetNumberOfK(vector<int> data ,int k) {int num=0;int size=data.size();if(size>0){int num1=getfk(data,0,size-1,k);int num2=getsk(data,0,size-1,k);if(num1!=-1 &&num2!=-1)num=num2-num1+1;}return num;}int getfk(vector<int>&data,int l,int r,int k){if(l>r)return -1;int m=(l+r)>>1;int m_val=data[m];if(m_val>k)r=m-1;else if(m_val<k)l=m+1;else{if((m>0 && data[m-1]!=k)|| m==0)return m;elser=m-1;}return getfk(data,l,r,k);}int getsk(vector<int>&data,int l,int r,int k){if(l>r)return -1;int m=(l+r)>>1;int m_val=data[m];if(m_val>k)r=m-1;else if(m_val<k)l=m+1;else{if((m<data.size()-1 && data[m+1]!=k)|| m==data.size()-1)return m;elsel=m+1;}return getsk(data,l,r,k);}};
原文:http://www.cnblogs.com/zhxshseu/p/5285005.html