最烦这种纯粹的数学题,数学本就不好的我瑟瑟发抖,就是纯粹的数学算法,搞清楚题意和理解就行。
java版本:
class Solution {
public int findNthDigit(int n) {
if (n<10){
return n;
}
// 无限的整数序列可能O(n)不太行
// 长度是n 的数字共有9*10^n个
int a=1;
while(9*Math.pow(10,a-1)*a<n) {
n-=9*Math.pow(10,a-1)*a;
a++;
}
// 得到 对应长度
// 1276 9+90*2+1087/3
// System.out.println(n);
int res= (int)Math.pow(10,a-1)-1+n/a;
// System.out.println(res);
if(n%a==0){
return GetRes(res,a);
}else{
res+=1;
a=n%a;
// System.out.println(res);
// System.out.println(a);
return GetRes(res,a);
}
}
public int GetRes(int res,int a){
String res_str=Integer.toString(res);
// System.out.println(res_str);
// System.out.println(res_str.substring(a-1,a));
return Integer.parseInt(res_str.substring(a-1,a));
}
}
网友评论