Сложность: easy
Нам дан массив символов letters, отсортированный в неубывающем порядке, и символ target. В массиве letters есть как минимум два разных символа. Возвращается наименьший символ в letters, который лексикографически больше target. Если такого символа не существует, возвращается первый символ в буквах.
Пример:
Input: letters = ["c","f","j"], target = "a"
Output: "c"
👨💻 Алгоритм:
1⃣Использовать бинарный поиск для нахождения позиции первого символа в letters, который лексикографически больше target.
2⃣Если найденный символ существует, вернуть его.
3⃣Если такого символа не существует, вернуть первый символ в letters.
😎 Решение:
var nextGreatestLetter = function(letters, target) {
let left = 0;
let right = letters.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (letters[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return letters[left % letters.length];
};Ставь 👍 и забирай 📚 Базу знаний