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

发布时间 2023-12-19 15:43:22作者: isomer莫柒瑜

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