题目描述:
题解:
1.用一个list保存最终返回结果,res1记录target出现的第一个位置,res2记录最后一个位置。
2.先采用二分法寻找target所在位置记录为pos。
3.将pos赋值给res1 res2,res1不断左移,寻找target第一个出现的位置,res2右移,找到最后一个target位置。
class Solution(object): def searchRange(self, nums, target): if len(nums)==0: return [-1,-1] result = [] pos = -1 left = 0 right = len(nums)-1 find = 0 while left<=right and find==0: mid = (left+right)//2 if nums[left]==target: pos = left find = 1 if nums[right]==target: pos = right find = 1 if nums[mid]==target: pos = mid find = 1 if nums[mid]>target: right = mid-1 if nums[mid]<target: left=mid+1 res1 = pos res2 = pos while res2+1<len(nums) and nums[res2+1]==target: res2 = res2+1 while res1-1>=0 and nums[res1-1]==target: res1 = res1-1 result.append(res1) result.append(res2) return result