首先确定,n 所对应的是几位数(如xxxx),然后确定第一个1000的起始位置m,然后使用(n - m) / 4(位数) + 1000,确定是哪一个确定的数,并用 4 - (n - m) % 4记录这个数从后往前第几位
注:注意整型的内存范围,可以使用long代替
class Solution {
public int findNthDigit(int n) {
if(n <= 9) return n;
long m = n ++;
long end = 10;
int i = 2;
long item = 10;
while(m > end + 9 * i * item){
end = end + 9 * i * item;
item *= 10;
i++;
}
n --;
int number = (int)end;
int num = (int)(item + (n - number) / i);
i = i - (n - number) % i;
while(i > 1){
num /= 10;
i --;
}
return num % 10;
}
}