744. 寻找比目标字母大的最小字母
744. 寻找比目标字母大的最小字母
给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。
返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。
二分
要注意寻找的是第一个大于target的,所以判断的时候不能加上等于。
也因为的第一个大于target的,所以向上取整
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
int l=0,r=letters.size()-1;
while(l<r){
int mid=(l+r)>>1;
if(letters[mid]>target)r=mid;
else l=mid+1;
}
return letters[r]>target?letters[r]:letters[0];
}
};