744. Find Smallest Letter Greater Than Target

L家tag题目,这种easy在面试的时候面试官肯定是expect你给出最优解的。这道题之前我一直用的O(n)的方法,可能是给的例子都是很小的数据量给我造成了错觉觉得O(n)就是最优了,然而这是一道最基本的binary search, 肯定是希望你做到O(logn)的。

class Solution {
    public char nextGreatestLetter(char[] letters, char target) {
        int start = 0;
        int end = letters.length - 1;
        while (start + 1 < end){
            int mid = start + (end - start) / 2;
            if (letters[mid] <= target){
                start = mid;
            } else {
                end = mid;
            }
        }
        if (letters[start] > target){
            return letters[start];
        }
        if (letters[end] > target){
            return letters[end];
        }
        return letters[0];
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容