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