【leetcode22】

34. 在排序数组中查找元素的第一个和最后一个位置

  1. class Solution:
  2.     def searchRange(self, nums: List[int], target: int) -> List[int]:
  3.         l=0
  4.         r=len(nums)-1
  5.         def serach_left(l,r):
  6.             while l <= r:
  7.                 mid=l+(r-l)//2
  8.                 if nums[mid]==target:
  9.                     if(mid==0 or nums[mid-1]!=target):
  10.                         return mid
  11.                     else:
  12.                         r=mid-1
  13.                 elif nums[mid]>target:
  14.                     r=mid-1
  15.                 else:
  16.                     l=mid+1
  17.             return -1
  18.         def serach_right(l,r):
  19.             while l <= r:
  20.                 mid=l+(r-l)//2
  21.                 if nums[mid]==target:
  22.                     if(mid==len(nums)-1 or nums[mid+1]!=target):
  23.                         return mid
  24.                     else:
  25.                         l=mid+1
  26.                 elif nums[mid]>target:
  27.                     r=mid-1
  28.                 else:
  29.                     l=mid+1
  30.             return -1
  31.         res=[]
  32.         res.append(serach_left(l,r))
  33.         res.append(serach_right(l,r))
  34.         return res

改了正常二分里的if nums[mid]==target:部分

发表评论