leetcode 34在排序陣列中查詢元素的第一個和最後一個位置 python
阿新 • • 發佈:2018-12-07
給定一個按照升序排列的整數陣列 nums,和一個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。
你的演算法時間複雜度必須是 O(log n) 級別。
如果陣列中不存在目標值,返回 [-1, -1]。
示例 1:
輸入: nums = [5,7,7,8,8,10], target = 8
輸出: [3,4]
示例 2:
輸入: nums = [5,7,7,8,8,10], target = 6
輸出: [-1,-1]
class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ left = 0 right = len(nums) - 1 mid = 0 if len(nums) == 0: return [-1,-1] if target >=nums[0] and target <= nums[-1]: while left <= right: mid = (left + right)//2 if nums[mid] == target: left = mid right = mid while left-1>=0 and nums[left-1]==nums[left]: left-=1 while right+1<=len(nums)-1 and nums[right+1]==nums[right]: right+=1 return [left,right] elif nums[mid] < target: left= mid + 1 else: right = mid - 1 return [-1,-1]