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;
    }
};
posted @ 2026-04-12 16:52  rdcamelot  阅读(17)  评论(0)    收藏  举报