几种简单条件判断——数组长度都为0,返回0;数组长度为1,且元素值等于k,返回1;数组长度大于1时,则按照下面原则求解:
找到数组中值等于k的第一个元素和最后一个元素。采用二分法求解速度快,若采用遍历,在数据量庞大时计算量也很大。

class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        if(data.empty())
            return 0;
        if(data.size()==1 && data[0]==k)
            return 1;

        int first = 0;
        int last = data.size()-1;
        if(first==last)
            return 0;

        int cnt=0;
        while(cnt==0 && first<=last)
        {
            int mid = (first+last)/2;
            if(data[mid]<k)
            {
                first = mid+1;
            }
            else if(data[mid]>k)
            {
                last = mid-1;
            }
            else
            {
                while(data[first]!=k&&data[first+1]!=k)
                {
                    first = (mid+first)/2;
                }
                while(data[last]!=k&&data[last-1]!=k)
                {
                    last = (mid+last)/2;
                }
                cnt = (data[last]==k?last:last-1)-(data[first]==k?first:first+1)+1;
            }
        }

        return cnt;
    }
};