Poison

400. Nth Digit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int findNthDigit(int n) {
int digitCount = 1;
long start = 1;
long numCount = 9;

while (n > numCount) {
// 可以批量减去一部分数字
n -= numCount;
start *= 10;
digitCount++;

numCount = 9 * digitCount * start;
}

Long num = start + ((n - 1) / digitCount); // 定位所属整数
return String.valueOf(num).charAt((n - 1) % digitCount) - '0';
}
}
Reference

400. Nth Digit
剑指 Offer 44. 数字序列中某一位的数字