744. 寻找比目标字母大的最小字母
题目链接:https://leetcode.cn/problems/find-smallest-letter-greater-than-target/
代码
ts
/**
* 744. 寻找比目标字母大的最小字母
* https://leetcode.cn/problems/find-smallest-letter-greater-than-target/
*/
function nextGreatestLetter(letters: string[], target: string): string {
let left = -1, right = letters.length;
while (left + 1 < right) {
let mid = Math.floor((left + right) / 2);
if (letters[mid] <= target) {
left = mid;
}
else {
right = mid;
}
}
return letters[right] ?? letters[0];
}思路
二分查找
本题要求在有序字母数组中找到比目标字母大的最小字母,使用二分查找。
使用开区间 (left, right) 进行二分查找:
初始化
left = -1, right = letters.length循环条件:
left + 1 < right当
letters[mid] <= target时,说明答案在右半部分,更新left = mid否则答案在左半部分(包括 mid),更新
right = mid循环结束时
right指向第一个> target的位置如果
right越界(所有字母都<= target),则返回letters[0](题目要求循环)时间复杂度
空间复杂度