744. 寻找比目标字母大的最小字母(2022-4-3)
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。
在比较时,字母是依序循环出现的。举个例子:
如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’
示例 1:
示例 2:
示例 3:
提示:
- 2 <= letters.length <= 104
- letters[i] 是一个小写字母
- letters 按非递减顺序排序
- letters 最少包含两个不同的字母
- target 是一个小写字母
解题思路
简单题我重拳出击!👊!
两个思路:模拟、二分查找。当然是模拟看起来简单,不过顺手练一下二分。
// 模拟
var nextGreatestLetter = function(letters, target) {
for(let l of letters){
if(target < l) return l
}
return letters[0]
}
// 二分
var nextGreatestLetter = function(letters, target) {
let l = 0,r = letters.length-1
if(letters[r] <= target) return letters[0]
while(l < r){
let mid = l+r >> 1
if(letters[mid] > target){
r = mid
}else{
l = mid + 1
}
}
return letters[l]
}