題目傳送門
題解
- 遍歷一遍真的是太不優美(
sb)了
- 有序數組嘛,閉着眼睛都知道是二分→_→
- 找到兩個位置
- 第一個>=k的位置
- 第一個>k的位置
AC-Code
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
auto lindex = lower_bound(data.begin(), data.end(), k);
auto rindex = upper_bound(data.begin(), data.end(), k);
return rindex - lindex;
}
int solve(vector<int> data ,int k) {
int L = 0, R = data.size();
int lindex, rindex;
while(L < R) {
int mid = (L + R) >> 1;
if(data[mid] < k)
L = mid + 1;
else
R = mid;
}
lindex = L;
L = 0, R = data.size();
while(L < R) {
int mid = (L + R) >> 1;
if(data[mid] <= k)
L = mid + 1;
else
R = mid;
}
rindex = R;
return rindex - lindex;
}
};