每日打卡

2021-11-30 400. 第 N 位数字

2021-11-30  本文已影响0人  16孙一凡通工

最烦这种纯粹的数学题,数学本就不好的我瑟瑟发抖,就是纯粹的数学算法,搞清楚题意和理解就行。

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));
    }
}
上一篇 下一篇

猜你喜欢

热点阅读