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]
相关推荐
钓鱼的肝8 分钟前
csp-j-s总结(2)
c++·经验分享·笔记·算法·青少年编程
奇妙之二进制23 分钟前
机器人导航路径规划算法入门(6)Dijkstra(迪杰斯特拉)算法深入解析
算法·导航
Niuguangshuo44 分钟前
论文解读:Qwen2-Audio,阿里的通用音频语言模型
算法·音视频·语音识别
WiChP2 小时前
【V0.1B16】从零开始的2D游戏引擎开发之路
开发语言·算法·游戏引擎
番茄巴士3 小时前
手写一个 mini HashMap,彻底搞懂哈希表原理
算法
圣保罗的大教堂3 小时前
leetcode 3742. 网格中得分最大的路径 中等
leetcode
宣宣猪的小花园.3 小时前
【机器学习】过拟合与泛化:模型为什么会“刷题很强、实战失灵”
人工智能·算法·机器学习
INGNIGHT3 小时前
624.数组列表中的最大距离(maximum)
算法·散列表
Niuguangshuo3 小时前
论文解读:w2v-BERT,把 wav2vec 2.0 和 BERT 合成一根管子的语音 SSL
算法·音视频·语音识别
科技小E3 小时前
国标视频分析平台EasyGBS×自动化AI算法训练服务器DLTM,把通用AI炼成你的现场AI
算法·自动化·音视频