题目大意
给定一个有序的字符数组 letters 和一个字符 target,要求找出 letters 中大于 target 的最小字符。letters 字符数组是循环数组。
解题思路
二分查找变种: 应该注意最后返回的是 l 位置的字符。
代码
class Solution(object):
def nextGreatestLetter(self, letters, target):
"""
:type letters: List[str]
:type target: str
:rtype: str
"""
l =
0
r = len(letters) -
1
while l <= r:
m = l + (r - l) /
2
if letters[m] <= target:
l = m +
1
else:
r = m -
1
if l < len(letters):
return letters[l]
else:
return letters[
0]
总结
后端技术漫谈
认证博客专家
分布式
Linux
Java
我是一名后端开发工程师。主要关注后端开发,数据安全,爬虫,物联网,边缘计算等方向,欢迎交流。各大平台都可以找到我:- 微信公众号:后端技术漫谈- Github:@qqxx6661- :@蛮三刀把刀- 知乎:@后端技术漫谈- 简书:@蛮三刀把刀- 掘金:@蛮三刀把刀- 腾讯云+社区:@后端技术漫谈原创文章主要内容:- 后端开发- Java面试- 设计模式/数据结构/算法题解- 爬虫/边缘计算/物联网- 读书笔记/逸闻趣事/程序人生