NOTE
寻找比目标字母大的最小字母
在循环有序字符列表中寻找大于目标字母的最小字母。
这是历史学习笔记,可能存在过时或不完整的理解。
1. 题目描述
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。
在比较时,字母是依序循环出现的。举个例子:
如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’
2. 思路
类似于二分查找上界.md
3. 实现
func nextGreatestLetter(letters []byte, target byte) byte {
if letters[len(letters)-1] <= target {
return letters[0]
}
left := 0
right := len(letters)-1
for left < right {
mid := left + (right-left)/2
if letters[mid] < target {
left = mid+1
} else if letters[mid] > target {
right = mid
}else {
left = mid+1
}
}
return letters[left]
}
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看