package main import "strconv" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return int整型 */ func findNthDigit(n int) int { // write code here // 从下标 0 开始计算 // 区间 // 0 (0,10) [10,100) [100,1000)... // 1 9 99-9 999-99 // 用于确定 n 是几位数 digit := 1 // 记录每个区间的起始数字 // 1 10 100 ... start := 1 // 记录当前区间共有几位数 // 0 (0,10) [10,100) [100,1000)... // 1 9*1*1 9*10*2 9*100*3 sum := 9 for n > sum { n -= sum start *= 10 digit++ sum = 9 * start * digit } // 定位 n 在哪个数字上 num := start + (n-1)/digit // 定位 n 在 num 的索引位置 index := (n - 1) % digit numStr := strconv.Itoa(num) return int(numStr[index] - '0') }