NOTE

寻找比目标字母大的最小字母

在循环有序字符列表中寻找大于目标字母的最小字母。

Data Structures & Algorithms创建于 更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

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]
}

4. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看