0%

nth-digit

Nth Digit – LeetCode 400

Problem

Description

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …

Answer

Original

Code

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int findNthDigit(int n) {
long digit = 1, ith = 1, base = 9;
while(n > base * digit){
n -= base * digit++;
ith += base;
base *= 10;
}
return to_string(ith + (n - 1) / digit)[(n - 1) % digit] - '0';
}
};

思路

数学题,优先判断位数,然后找到对应的数字再取出那一位。时间复杂度$O(log_{10}{n})$,空间复杂度$O(1)$。
耗时$3$ ms,排名$96.57\%$

Better

思路

还没看到更好的思路。