给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]
示例 2:输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]
示例 3:输入:nums = [], target = 0
输出:[-1,-1]class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:if not nums:return [-1, -1]n = len(nums)# 查找第一个元素和最后一个元素def find(is_find_first):begin = 0end = n - 1while begin <= end:mid = begin + (end - begin) // 2if nums[mid] > target:end = mid - 1elif nums[mid] < target:begin = mid + 1# 找到目标值,开始定位第一个和最后一个位置else:if is_find_first:# 如果不满足条件,缩小左边界,继续往左边查找if mid > 0 and nums[mid] == nums[mid-1]:end = mid - 1else:return midelse:# 如果不满足条件,增大左边界,继续往右查找if mid < n - 1 and nums[mid] == nums[mid+1]:begin = mid + 1else:return midreturn -1return [find(True), find(False)]

62. Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 (二分查找-局部有序)相关推荐

  1. LeetCode (二分小专题)33搜索旋转排序数组34在排序数组中查找元素的第一个和最后一个位置35搜索插入位置

    前言 国庆前最后一次打卡,国庆后继续开启,公众号bigsai回复进群欢迎加入打卡,如有帮助记得点赞收藏. 近期打卡记录: LeetCode 32最长有效括号(困难) (本周) LeetCode 30串 ...

  2. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  3. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...

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

    在排序数组中查找元素的第一个和最后一个位置 class Solution {public int[] searchRange(int[] nums, int target) {int len = nu ...

  5. 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标

    34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...

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

    34. 在排序数组中查找元素的第一个和最后一个位置 https://leetcode-cn.com/problems/find-first-and-last-position-of-element-i ...

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

    34. 在排序数组中查找元素的第一个和最后一个位置(两种方法记录) 法一(BP算法--使用双指针分别从前.后定位first index和last index),代码如下: class Solution ...

  8. 34. 在排序数组中查找元素的第一个和最后一个位置——二分法的魔鬼细节 小记

    每次遇到二分法,一看就会,一写就废,在力扣上看到一篇很好的总结,因此做一下搬运工 参考题解--二分法各种情况及细节剖析,附送小诗一首 场景包括寻找一个数.寻找左侧边界.寻找右侧边界. 而且,我们就是要 ...

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

    在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返 ...

最新文章

  1. 前后端分离业务逻辑常用封装函数(一)
  2. zblog主题OL免费清爽资讯博客主题
  3. 持久层和数据访问层_什么是持久层? JDBC 演变的 Mybatis 架构分析
  4. Flex 得到一个对象的所有属性
  5. 固定dll的加载基址的方法
  6. 微信公众号发送模版消息 Java实现
  7. Data URL 基本介绍
  8. 微信订餐商城,微店系统.互联网第二个春天!
  9. python大数据工程师薪资待遇_2019年就业薪资,凭什么大数据工程师遥遥领先?...
  10. 低功耗蓝牙芯片CH579系列开发记录
  11. Win10亮度调节无效
  12. 写论文的工具推荐(包括下载论文,写作,翻译等)
  13. golang代码实现chmod 777效果
  14. python爬取图片失败显示404_python3.7中Web抓取时出现http404错误
  15. BAT 脚本转 EXE 工具
  16. 千耘农机导航的“星地一体”能力究竟是什么?
  17. 【论文解析】病理有丝分裂检测领域适应问题
  18. 侧边导航栏代码css,【源码分享】jquery+css实现侧边导航栏(示例代码)
  19. git移除不需要版本控制文件
  20. 几款常用幻灯片制作软件对比

热门文章

  1. DB2 SQL查询结果集自动编号、返回条数范围控制研究
  2. 奥迪坚呼叫中心在电话营销领域必须要了解的几大优势
  3. python与shell校验IP地址合法性
  4. 学习:Java泛型之一
  5. ASP.NET 页面事件执行顺序
  6. 《编写高质量代码:改善C#程序的157个建议》勘误表
  7. C语言SHELL排序算法
  8. libcurl 域名解析分析
  9. 如何判断设备是上电复位还是软复位(主动调用复位接口或者看门狗复位,W600)
  10. 2021合工大超越卷数二好题精选