思路:类比在有序数组里查找某个数,二分法查到后,再根据这个数左右稍稍遍历一下
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; } };