744. 寻找比目标字母大的最小字母
- 题号:力扣744
- 知识点:二分查找
- 目标完成度:34/150
- 总结
题干:
思路:
- 1.先处理题干最后说的循环处理问题,当
target >= letters[-1]
时,触发循环,返回第一个字符 - 2.
while
主循环为二分查找的主体,注意当letters[mid] == target
时,left = mid + 1
,这样是为了避免数组中包含有多个重复的target
,而我们想要的是大于这个target
的第一个字符
class Solution:
def nextGreatestLetter(self, letters: List[str], target: str) -> str:
if target >= letters[-1]:
return letters[0]
left = 0
right = len(letters) - 1
while left<right:
mid = left + (right - left)//2
if letters[mid] < target:
left = mid + 1
if letters[mid] > target:
right = mid
if letters[mid] == target:
left = mid + 1
if letters[left] > target:
return letters[left]
return letters[left]