题目
1.描述
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。(想象成26个字母头尾相接组成一个环)
2.示例
输入:letters = ["c", "f", "j"] , target = "a", 输出:"c"
输入:letters = ["c", "f", "j"] , target = "c" , 输出: "f"
3.思路
使用二分查找, 但此处不是找相等, 而是找比目标大且离目标最近的值.
4.代码
public char nextGreatestLetter(char[] letters, char target) {
int n = letters.length;
int low = 0, high = n - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (letters[mid] <= target)
low = mid + 1;
else
high = mid - 1;
}
return low < n ? letters[low] : letters[0];
}
本文介绍了一个利用二分查找算法解决特定问题的方法:在一个已排序的字符列表中找到比给定目标字母大的最小字母。通过具体示例说明了如何实现这一算法,并给出了完整的Java代码实现。
411

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



