给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。
我觉得这题是哪以理解的
看这个题解
func findNthDigit(n int) int {
digit := 1
start := 1
count := 9
for n > count {
n -= count
digit++
start = start * 10
count = 9*start*digit
}
//找到当前的数是多少
num := start + (n-1)/digit
strNum := strconv.Itoa(num)
//找到当前这个数的下标
digitIndex := (n - 1) % digit
digitStr := string(strNum[digitIndex])
digitInt, _ := strconv.Atoi(digitStr)
return digitInt
}
num := base + (n-1) / digit
这个公式是怎么得出来的 为什么要减一 除digit很好理解 因为这是找到你是第几位数
-1 我的理解是base已经占据了第一位 所以 如果你的n是10的话 不减1 得到的num就是11