LeetCode 744.寻找比目标字母大的最小字母
题目:
给你一个字符数组 letters
,该数组按非递减顺序排序,以及一个字符 target
。letters
里至少有两个不同的字符。
返回 letters
中大于 target
的最小的字符。如果不存在这样的字符返回 letters
的第一个字符。
思路:灵神 闭区间写法 >= > < <=转化,‘b’ = (char) ('a' + 1) 字符可以直接比较大小
代码:
class Solution {public char nextGreatestLetter(char[] letters, char target) {int start = lowerBound(letters, (char) (target + 1));if (start < letters.length) {return letters[start];} else {return letters[0];}}private int lowerBound(char[] letters, char target) {int left = 0, right = letters.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (letters[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return left;}
}
性能:
时间复杂度o(logn)
空间复杂度o(1)