思路:按照每次位数的变化作划分,计算每个阶级的数据总量,算出所求数的阶级,然后进一步用除法算出所求数代表的那个数,和求模计算出那个数中的具体哪一位便可



public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    public int findNthDigit (int n) {
        //先错误判断
        if(n<0){
            return 0;
        }
        
        long width=1, num = n-1;
        long scope_start=1 ,scope_len=9;
        while(num>width*scope_len){
            num-=width*scope_len;
            width++;
            scope_len*=10;
            scope_start*=10;
        }
        long number = (scope_start+num/width);
        if(number>9){
            for(long i=(width-(num%width)-1);i>0;i--){
                number=number/10;
            }
        }
        return (int)number%10;
    }
}