剑指 Offer 44. 数字序列中某一位的数字

    技术2025-06-15  31

    文章目录

    题目示例题解

    题目

    题目链接

    数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。

    请写一个函数,求任意第n位对应的数字。

    示例

    输入 n = 11 输出 3

    题解

    90x2 = 180 二位数占180位 900x3 = 2700 三位数占2700位,先用n减去这些判断当前数字是多少位,然后用n//dig + pow(10,dig-1)得到当前数,n%dig == 0 直接返回上个数的末尾值,否则返回当前数的第n%dig位

    if n < 10: return n else: n -= 9 count = 90 dig = 2 while n > count*dig: n -= (count*dig) count = count * 10 dig = dig + 1 num = pow(10,dig-1) + n // dig if n % dig == 0: num = num - 1 return num % 10 else: index = n % dig val = pow(10,dig-index) return num//val%10
    Processed: 0.011, SQL: 9