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

根据以上规律

  1. 确定n所在数字的位数
    for n > count {
         n -= count
         start *= 10
         digit += 1
         count = 9*start*digit
    }
    
    当循环结束时,即可得出数字的位数digit
  2. 确定n所在的数字
    num := start + n / digit  // 上述循环结束后,n的值为从start到某个数字的数位数目 
    
  3. 确定所求的数位是当前数字中的第几位
    i = (n - 1) % digit
    
  4. 求出当前数字的第i位