当前位置:网站首页>2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array

2022-7-7 Leetcode 34. Find the first and last positions of elements in a sorted array

2022-07-07 13:39:00 weixin_ fifty-one million one hundred and eighty-seven thousand

 Insert picture description here
 Insert picture description here
1、 The left and right intervals should be searched separately , The time complexity is O ( l o g N ) O(logN) O(logN)
2、 When looking for the right boundary , Shrink left to right ; When looking for the left boundary , The right side shrinks to the left .

class Solution {
    
public:
    int getR(vector<int>& nums, int target){
    
        int l = 0, r = nums.size()-1;
        int rightborder = -1;
        while (l <= r){
    
            int mid = l + (r - l)/2;
            if (nums[mid] == target){
    
                l = mid + 1;
                rightborder = mid;
            }else if (nums[mid] > target){
    
                r = mid - 1;
            }else {
    
                l = mid + 1;
            }
        }
        return rightborder;
    }

    int getL(vector<int>& nums, int target){
    
        int l = 0, r = nums.size()-1;
        int leftborder = -1;
        while (l <= r){
    
            int mid = l + (r - l)/2;
            if (nums[mid] == target){
    
                r = mid - 1;
                leftborder = mid;
            }else if (nums[mid] > target){
    
                r = mid - 1;
            }else {
    
                l = mid + 1;
            }
        }
        return leftborder;
    }

    vector<int> searchRange(vector<int>& nums, int target) {
    
        int leftborder = getL(nums, target);
        int rightborder = getR(nums, target);
        return {
    leftborder, rightborder};
    }
};
原网站

版权声明
本文为[weixin_ fifty-one million one hundred and eighty-seven thousand]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071136083304.html