Leetcode400

 

1 位数有 1*9

2 位数有 2*90

3 位数有 3 *90

n位数有 (n-1)*9* 10**n-1

确定位数: 

确定数字:

确定数字的哪一位:

 

 

 比如第13位 计算 13-9=4 ,从9开始偏移4个,但是偏移算的话需要从0,即有 3/2=1  10+1=11 确定是11, 3%2=1 确定下标为1

 对应二位数字 10  

10的第一位数字相对于来说是1 ,第二位数字是0,也就是在11的位置

可能说的不太清楚,代码如下:

 public int findNthDigit(int n) {
    //获取长度 int len =1;
    //边界 long boder=9; //转化为long
long N=n; while(N> len*boder){ // 9 180 2700 算出位数
       N=N-boder*len; boder=boder*10; len++; } int offset=(int)(N-1)/len; //算出偏移 int begin = (int) boder/9; //多少位 int mod =(int) (N-1)%len; //取余 String target = String.valueOf(begin+offset); int ans =target.charAt(mod)-'0' ; return ans; }

  

 

posted @ 2021-12-03 19:15  天道酬勤312  阅读(48)  评论(0)    收藏  举报