LeetCode-34. 在排序数组中查找元素的第一个和最后一个位置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l718531794/article/details/85111117

题目地址:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
思路:两次二分
AC代码:

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int n = nums.size();
        int l = 0;
        int r = n-1;
        int ans_l = 0x3f3f3f3f;
        int ans_r = -1;
        while(l<=r){
            int mid = (l+r)/2;
            if(nums[mid] == target){
                ans_l = min(mid,ans_l);
                r = mid-1;
            }else if(nums[mid]>target){
                r = mid-1;
            }else if(nums[mid]<target){
                l = mid+1;
            }
        }
        if(ans_l == 0x3f3f3f3f)
            ans_l = -1;
        l = 0;
        r = n-1;
        while(l<=r){
            int mid = (l+r)/2;
            if(nums[mid] == target){
                ans_r = max(mid,ans_r);
                l = mid+1;
            }else if(nums[mid]>target){
                r = mid-1;
            }else if(nums[mid]<target){
                l = mid+1;
            }
        }
        vector<int>ans;
        ans.push_back(ans_l);
        ans.push_back(ans_r);
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/l718531794/article/details/85111117