class Solution:
def nextGreatestLetter(self,letters,target):
if target<letters[0] or target>=letters[-1]:#特殊情况提前处理,target小于[0],则较大值是[0];target比[-1]>=,=的时候,因为是循环的,即第一个大于最后一个,所以较大值是[0],>的时候,也是循环的,所以较大值是[0]
return letters[0]
left,right=0,len(letters)-1
while left<right: #<=还是<,假设len(letters)=1,right=0,则<=的话进入循环,left=mid+1会超出索引,所以left<right
mid=left+(right-left)//2
if letters[mid]>target:
right=mid #因为mid没被使用,所以right=mid
else:
left=mid+1
return letters[left]
744. 寻找比目标字母大的最小字母 二分方法
最新推荐文章于 2022-07-13 17:41:06 发布