- 二分法找到当前数字在数组中的位置;
- 基于该位置左右遍历,找到相同数字的个数。
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int left = 0;
int right = data.size();
int result = 0;
while (left < right) {
int mid = left + ((right - left) / 2);
if (data[mid] < k) {
left = mid + 1;
}
else if (data[mid] > k) {
right = mid;
}
else {
for (int i = mid; i < data.size() && data[i] == k; i++) {
result++;
}
for (int i = mid - 1; i >= 0 && data[i] == k; i--) {
result++;
}
return result;
}
}
return 0;
}
};