Сложность: 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 {
function findNthDigit($n) {
$length = 1;
$count = 9;
$start = 1;
while ($n > $length * $count) {
$n -= $length * $count;
$length++;
$count *= 10;
$start *= 10;
}
$start += intval(($n - 1) / $length);
$s = strval($start);
return intval($s[($n - 1) % $length]);
}
}Ставь 👍 и забирай 📚 Базу знаний