Сложность: medium
Дано целое число n, вернуть n-ю цифру бесконечной последовательности чисел [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...].
Пример:
Input: n = 3
Output: 3
👨💻 Алгоритм:
1⃣Определение диапазона
Начните с определения количества цифр в числах текущего диапазона (1-9, 10-99, 100-999 и т.д.).
Уменьшайте значение n, вычитая количество цифр в текущем диапазоне, пока не найдете диапазон, в который попадает n-я цифра.
2⃣Нахождение конкретного числа
Когда определите диапазон, найдите точное число, содержащее n-ю цифру.
Определите индекс цифры в этом числе.
3⃣Возвращение n-й цифры
Извлеките и верните n-ю цифру из найденного числа.
😎 Решение:
class Solution {
public int findNthDigit(int n) {
int length = 1;
long count = 9;
int start = 1;
while (n > length * count) {
n -= length * count;
length++;
count *= 10;
start *= 10;
}
start += (n - 1) / length;
String s = Integer.toString(start);
return s.charAt((n - 1) % length) - '0';
}
}Ставь 👍 и забирай 📚 Базу знаний