Find Smallest Letter Greater Than Target
Description
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'
.
Examples:
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"
Note:
letters
has a length in range[2, 10000]
.letters
consists of lowercase letters, and contains at least 2 unique letters.target
is a lowercase letter.
Solution(javascript)
/**
* @param {character[]} letters
* @param {character} target
* @return {character}
*/
const nextGreatestLetter = (letters, target) => {
const aux = (low, high, current) => {
if (low > high) {
return current
}
const middle = Math.floor((low + high) / 2)
if (letters[middle] > target) {
return aux(low, middle - 1, letters[middle])
}
return aux(middle + 1, high, current)
}
return aux(0, letters.length - 1, letters[0])
}