mycode 63.98%
class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ if target in nums: start = nums.index(target) end = start for i in nums[start+1:]: if i == target : end += 1 else: return [start,end] return [start,end] else: return [-1,-1]
参考
思路:类似于二分法,先用[low,high]找到包含target的子段,再用[L,R]找到包含target的两端
class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ low, high = 0, len(nums)-1 while low <= high: mid = (low+high)//2 if nums[mid] == target: L, R = mid, mid while L >= low and nums[L] == target: L -= 1 while R <= high and nums[R] == target: R += 1 return [L+1, R-1] if nums[low] <= target < nums[mid]: high = mid - 1 else: low = mid + 1 return [-1, -1]
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步