思路:类比在有序数组里查找某个数,二分法查到后,再根据这个数左右稍稍遍历一下

class Solution {
public:
    int GetNumberOfK(vector<int> data, int k) {
        if (data.size() == 0) {
            return 0;
        }
        int right = data.size() - 1;
        int left = 0;
        int mid = (right + left) / 2;
        ;
        while (data[mid] != k) {
            if (data[mid] > k) {
                right = mid;
            } else {
                left = mid + 1;
            }
            if (left >= right) {
                return 0;
            }
            mid = (right + left) / 2;
        }

        int ret = 0;
        for (int i = mid; i < data.size(); i++) {
            if (data[i] == k) {
                ret++;
            } else {
                break;
            }
        }
        for (int i = mid - 1; i >= 0; i--) {
            if (data[i] == k) {
                ret++;
            } else {
                break;
            }
        }
        return ret;
    }
};