自学内容网 自学内容网

LeetCode34. 在排序数组中查找元素的第一个和最后一个位置(C++)

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

题目链接

https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/
在这里插入图片描述

代码

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int leftb = getLeft(nums, target);
        int rightb = getRight(nums, target);
        
        if(leftb == -2 || rightb == -2) return {-1, -1};
        if(rightb - leftb > 1) return {leftb + 1, rightb - 1};
        return {-1, -1};

    }

private:
    int getRight(vector<int>& nums, int target){
        int left = 0;
        int right = nums.size() - 1;
        int Rightb = -2;
        while(right >= left){
            int middle = left + (right - left) / 2;
            if(nums[middle] > target){
                right = middle - 1;
            }
            else{
                left = middle + 1;
                Rightb = left;
            }
        }
        return Rightb;
    }
    int getLeft(vector<int>& nums, int target){
        int left = 0;
        int right = nums.size() - 1;
        int Leftb = -2;
        while(right >= left){
            int middle = left + (right - left) / 2;
            if(nums[middle] >= target){
                right = middle - 1;
                Leftb = right;
            }
            else{
                left = middle + 1;
            }
        }
        return Leftb;
    }
};

原文地址:https://blog.csdn.net/qq_44953660/article/details/136307495

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!