744. 寻找比目标字母大的最小字母 - 力扣(LeetCode)


可以使用二分查找来优化查找效率,代码如下(Python 实现):
from bisect import bisect_right
def nextGreatestLetter(letters, target):
index = bisect_right(letters, target) # 找到 target 右侧的位置
return letters[index] if index < len(letters) else letters[0] # 返回找到的字符或第一个字符
# 示例测试
print(nextGreatestLetter(["c", "f", "j"], "a")) # 输出 "c"
print(nextGreatestLetter(["c", "f", "j"], "c")) # 输出 "f"
print(nextGreatestLetter(["x", "x", "y", "y"], "z")) # 输出 "x"
代码解析:
-
使用
bisect_right(letters, target)找到target在letters中的插入位置。 -
如果找到的索引
index小于letters长度,则返回letters[index]。 -
否则,说明
target已经大于等于所有字符,返回数组的第一个字符。
该方法时间复杂度为 O(logn),适用于大规模数据集。
172

被折叠的 条评论
为什么被折叠?



