import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ public int findNthDigit (int n) { //10 180+10 2700+180+10 //[0,10) [10,100) [100,1000) int bit = 1 ;//位数 long low = 0 ;//下限 long high = 10 ;//上限 //找n在哪个区间(每个区间都有若干位数,当n高于区间的位数,就减去这些区间的位数 //继续判断下一个区间 while(n >= (high-low)*bit) { long count = (high-low)*bit; n-=count ; bit++ ; low=(low==0?10:low*10) ; high *= 10 ; } //在区间low~high的第num位数(从0开始) long num = n / bit + low ; //在第num位数的第一个位置 int bbit = n % bit ; int div = (int)(Math.pow(10.0,bit-bbit-1)) ; return (int)(num/div)%10 ; } }