题目描述:
统计一个数字在数组中出现的次数。
思路:
二分查找数组中第一次出现数字k的位置。
代码:
class Solution {
public:
int GetNumberOfK(vector<int> data, int k) {
if (data.empty()) return 0;
int len = data.size();
int l = 0;
int r = len-1;
int mid = (l + r) / 2;
while(l < r) {
if (data[mid] < k) {
l = mid + 1;
}else if (data[mid] > k) {
r = mid - 1;
}else if (data[mid] == k) {
if (data[mid-1] == k) {
r = mid - 1;
}else break;
}
mid = (l + r) / 2;
}
int ans = 0;
while(data[mid] == k) {
ans++;
mid++;
}
return ans;
}
};