Given a list of sorted characters letters
containing only lowercase letters, and given a target letter target
, find the smallest element in the list that is larger than the given target.數組
Letters also wrap around. For example, if the target is target = 'z'
and letters = ['a', 'b']
, the answer is 'a'
.spa
Examples:code
Input: letters = ["c", "f", "j"] target = "a" Output: "c" Input: letters = ["c", "f", "j"] target = "c" Output: "f" Input: letters = ["c", "f", "j"] target = "d" Output: "f" Input: letters = ["c", "f", "j"] target = "g" Output: "j" Input: letters = ["c", "f", "j"] target = "j" Output: "c" Input: letters = ["c", "f", "j"] target = "k" Output: "c"
找到數組裏邊的大於目標的最小值
思路以下,用二分查找找到目標便可,若是找不到則返回數組的第一位
public char nextGreatestLetter(char[] letters, char target) { int lo = 0, hi = letters.length; while (lo < hi) { int mi = lo + (hi - lo) / 2; if (letters[mi] <= target) lo = mi + 1; else hi = mi; } return letters[lo % letters.length]; }
取mod是由於若是找不到lo最後會變成hi即letters.lengthblog
這種狀況下仍是返回第一個element