题解 | #数字在升序数组中出现的次数#使用迭代器做二分查找
数字在升序数组中出现的次数
https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
class Solution { public: int GetNumberOfK(vector<int> data ,int k) { auto beg = data.begin(), end = data.end(); int num = 0; while (beg < end) { auto mid = beg + (end - beg) / 2; if (*mid < k) { beg = mid + 1; continue; } if (*mid > k) { end = mid - 1; continue; } if (*mid == k) { ++num; auto left = mid - 1, right = mid + 1; while (left >= data.begin()) { if (*left != k) break; ++num; --left; } while (right < data.end()) { if (*right != k) break; ++num; ++right; } break; } } return num; } };