C/C++教程

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

本文主要是介绍LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

思路:
与AcWing 789一致

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        if (nums.size() == 0) return {-1, -1};
        int begin, end;
        int l = 0, r = nums.size() - 1;
        while (l < r) {
            int mid = l + r >> 1;
            if (nums[mid] >= target) r = mid;
            else l = mid + 1;
        } 
        if (nums[l] != target) return {-1, -1};
        else {
            begin = l;
            int l = 0, r = nums.size() - 1;
            while (l < r) {
                int mid = l + r + 1 >> 1;
                if (nums[mid] <= target) l = mid;
                else r = mid - 1;
            } 
            end = l;
        }
        return {begin, end};
    }
};
这篇关于LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!