python 在排序数组中查找元素的第一个和最后一个位置
生活随笔
收集整理的這篇文章主要介紹了
python 在排序数组中查找元素的第一个和最后一个位置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在排序數組中查找元素的第一個和最后一個位置
給定一個按照升序排列的整數數組 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]提示:0 <= nums.length <= 105 -109 <= nums[i] <= 109 nums 是一個非遞減數組 -109 <= target <= 109題解
class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:length = len(nums)first = 0last = length - 1# 初始化結構數組retult_list = [-1, -1]while last >= first:mid = first + (last - first) // 2if nums[mid] == target:# 向前探測法before_mid = midwhile before_mid > 0 and nums[before_mid-1] == target:before_mid -= 1retult_list[0] = before_mid# 向后探測法after_mid = midwhile after_mid + 1 < length and nums[after_mid+1] == target:after_mid += 1retult_list[1] = after_midreturn retult_listelif nums[mid] > target:last = mid - 1else:first = mid + 1 return retult_list總結
以上是生活随笔為你收集整理的python 在排序数组中查找元素的第一个和最后一个位置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 搜索插入位置
- 下一篇: websocket python爬虫_p