1. 程式人生 > >LeetCode744 |尋找比目標字母大的最小字母

LeetCode744 |尋找比目標字母大的最小字母

LeetCode744 |尋找比目標字母大的最小字母

  • 問題描述
    給定一個只包含小寫字母的有序陣列letters 和一個目標字母 target,尋找有序數組裡面比目標字母大的最小字母。

數組裡字母的順序是迴圈的。舉個例子,如果目標字母target = ‘z’ 並且有序陣列為 letters = [‘a’, ‘b’],則答案返回 ‘a’。

示例:

輸入:
letters = [“c”, “f”, “j”]
target = “a”
輸出: “c”

  • 解題方法
    利用二分查詢, 最後判斷low的位置,如果大於陣列長度就輸出第一個元素,否則直接輸出第low個元素
    • 程式碼
class Solution {
public:
    char nextGreatestLetter(vector<char>& letters, char target) {
        int low = 0;
        int height = letters.size() -1;
        int mid;
        while(low<=height){
            mid = (low + height) / 2;
           if(letters[mid] > target){
                height = mid -1;
            }
            else{
                low = mid + 1;
            }
        }
        return low >= letters.size() ?  letters[0]:letters[low]; 
    }
};