题解 小U数数 | 豆包MarsCode AI刷题

41 阅读1分钟

1.问题描述

小U正在数偶数,从 0,2,4,6,8,10,12,…0,2,4,6,8,10,12,… 开始,依次将这些数连在一起,形成一个无穷长的字符串,例如:"0246810121416..."。小U想知道这个字符串中的第 nn 个字符是什么。


测试样例

样例1:

输入:n = 6
输出:1

样例2:

输入:n = 10
输出:1

样例3:

输入:n = 15
输出:8

2.解题思路

将n所代表的位置所代表的数字找出来,然后将这个数字转为字符串通过剩余的位置得到最后结果

3.算法步骤

1.将n进行预处理,处理出当前处于个位或者十位、百位、千位
2.得到当前的位数的第一个值 3.将剩余的n处理成当前的数字

4.Python3代码

def solution(n : list) -> int:
    d_l = 1
    count = 5
    sta = 0
    while n > d_l * count:
        n -= d_l * count
        d_l += 1
        if count == 5:
            count *= 9
            sta += 1
        else:
            count *= 10
        sta *= 10
    if n % d_l == 0:
        sta += (n // d_l - 1) * 2
        s = str(sta)
        print(sta)
        return int(s[len(s) - 1])
    else:
        sta += (n // d_l) * 2
        s = str(sta)
        return int(s[n % d_l - 1])

5.算法复杂度分析

时间复杂度O(logn)

空间复杂度O(logn)