LeetCode744 |尋找比目標字母大的最小字母
阿新 • • 發佈:2018-11-29
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]; } };