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];
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章