package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev
# README
数字系列中某一位的数字
1. 题目描述
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
2. 示例
输入:n = 3
输出:3
输入:n = 11
输出:0
3. 解题
根据大佬的回答捋一捋:
数字范围 位数(digit) 数字数目 数位数目(count)
0-9 1 10 10
10-99 2 90 180
100-999 3 900 2700
start-end digit 9*start 9*start*digit
根据以上规律
- 确定n所在数字的位数
当循环结束时,即可得出数字的位数digitfor n > count { n -= count start *= 10 digit += 1 count = 9*start*digit }
- 确定n所在的数字
num := start + n / digit // 上述循环结束后,n的值为从start到某个数字的数位数目
- 确定所求的数位是当前数字中的第几位
i = (n - 1) % digit
- 求出当前数字的第i位