LeetCode HOT100 - 在排序数组中查找元素的第一个和最后一个位置
时间复杂度要求 log
那么自然是二分
用库函数,一个大于等于的是最早出现的,和第一个大于的 - 1 的是最迟出现的
class Solution {
public:
vector<int> searchRange(vector<int>& a, int target) {
vector<int> ans(2);
int l = lower_bound(a.begin(), a.end(), target) - a.begin();
int n = a.size();
if (l == n || a[l] != target) {
ans[0] = -1;
ans[1] = -1;
return ans;
}
ans[0] = l;
int r = upper_bound(a.begin(), a.end(), target) - a.begin() - 1;
ans[1] = r;
return ans;
}
};

浙公网安备 33010602011771号