尋找比目標字母大的最小字母
阿新 • • 發佈:2020-10-28
尋找比目標字母大的最小字母
題目:
給你一個排序後的字元列表 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
解題思路: 一道搜尋左邊界的二分題目, 套用模板答題即可
class Solution { public char nextGreatestLetter(char[] letters, char target) { int l = 0, r = letters.length - 1; while(l <= r) { int mid = l + (r - l) / 2; char ch = letters[mid]; if(ch < target) { l = mid + 1; } else if(ch == target) { l = mid + 1; } else { r = mid - 1; } } return l == letters.length ? letters[0] : letters[l]; } }