[Leetcode] 744. 尋找比目標字母大的最小字母 java
阿新 • • 發佈:2018-12-09
給定一個只包含小寫字母的有序陣列letters
和一個目標字母 target
,尋找有序數組裡面比目標字母大的最小字母。
數組裡字母的順序是迴圈的。舉個例子,如果目標字母target = 'z'
並且有序陣列為 letters = ['a', 'b']
,則答案返回 'a'
。
示例:
輸入: letters = ["c", "f", "j"] target = "a" 輸出: "c" 輸入: letters = ["c", "f", "j"] target = "c" 輸出: "f" 輸入: letters = ["c", "f", "j"] target = "d" 輸出: "f" 輸入:letters = ["c", "f", "j"] target = "g" 輸出: "j" 輸入: letters = ["c", "f", "j"] target = "j" 輸出: "c" 輸入: letters = ["c", "f", "j"] target = "k" 輸出: "c"
注:
letters
長度範圍在[2, 10000]
區間內。letters
僅由小寫字母組成,最少包含兩個不同的字母。- 目標字母
target
是一個小寫字母。
class Solution { public char nextGreatestLetter(char[] letters, char target) { int n=letters.length; int l=0; int r=n; while(l<r){ int mid=l+(r-l)/2; if(letters[mid]>target){ r=mid;//mid-1不通過 } else{ l=mid+1; } } return l<n?letters[r]:letters[0];//l r相等 都可以 } }
依然是二分查詢