Leetcode744 寻找比目标字母大的最小字母——二分法

题目:给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母。

数组里字母的顺序是循环的。举个例子,如果目标字母target = ‘z’ 并且有序数组为 letters = [‘a’, ‘b’],则答案返回 ‘a’。

//用二分法查找,效率极高,1ms ,击败了99.67%用户.
class Solution {
    public char nextGreatestLetter(char[] arr, char key) {
        int low=0;
        int high = arr.length-1;
        int mid ;
        if(key >=arr[high]){
            return arr[0];
        }
        while(low<=high){
            mid = low+(high-low)/2;
            if(arr[mid]<=key){
                low = mid+1;
            }else{
                high = mid-1;
            }
        }
        return arr[low];
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章