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

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

思路:找左边界就让等于target的放到right上一直逼近target的起始位置,直到左右边界left大约right后,left就是左边界。右边界相似。

  • 找左边界 :遇到 nums[mid] < target 就往右走,否则往左走
  • 找右边界 :遇到 nums[mid] <= target 就往右走,否则往左走
python 复制代码
class Solution:
    def searchRange(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        left, right = 0, n - 1
        while left <= right:
            mid = (left + right) // 2
            if nums[mid] < target:
                left += 1
            else:
                right -= 1
        frist = left

        left = 0
        right = n - 1
        while left <= right:
            mid = (left + right) // 2
            if nums[mid] <= target:
                left += 1
            else:
                right -= 1
        last = right
        if frist <= last:
            return [frist, last]
        else:
            return [-1, -1]
相关推荐
qyzm2 小时前
Educational Codeforces Round 189 (Rated for Div. 2)
数据结构·python·算法
fox_lht2 小时前
8.3.使用if let和let else实现简明的程序流控制
开发语言·后端·算法·rust
北顾笙9802 小时前
day28-数据结构力扣
数据结构·算法·leetcode
米粒12 小时前
力扣算法刷题 Day 48(单调栈)
算法·leetcode·职场和发展
我是无敌小恐龙3 小时前
Java SE 零基础入门Day03 数组核心详解(定义+内存+遍历+算法+实战案例)
java·开发语言·数据结构·人工智能·算法·aigc·动态规划
用PPT构建世界3 小时前
PPT插入视频的播放控制:自动播放与点击播放设置!
职场和发展·powerpoint·ppt·ppt模板·职场分享
广州灵眸科技有限公司3 小时前
瑞芯微(EASY EAI)RV1126B rknn-toolkit-lite2使用方法
linux·网络·人工智能·物联网·算法
旖-旎3 小时前
深搜(二叉树剪枝)(3)
数据结构·c++·算法·力扣·剪枝·递归
流年如夢3 小时前
结构体:定义、使用与内存布局
c语言·开发语言·数据结构·c++·算法