LeetCode热题100-在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组nums和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。思路找左边界就让等于target的放到right上一直逼近target的起始位置直到左右边界left大约right后left就是左边界。右边界相似。找左边界遇到nums[mid] target就往右走否则往左走找右边界遇到nums[mid] target就往右走否则往左走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]
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2544890.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!