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:
lettershas a length in range[2, 10000].lettersconsists of lowercase letters, and contains at least 2 unique letters.targetis 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])
}