欢迎光临散文网 会员登陆 & 注册

Leetcode Day6 1

2022-04-06 09:31 作者:我喜欢喝一点点  | 我要投稿

剑指 Offer 17. 打印从1到最大的n位数

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

这道题主要是要考虑到大数问题,即在超过int,long long范围的情况下如何将需要的数打印出来,这时候就需要对字符串进行处理。

所有的数字就是0~9的全排列(当然,需要考虑前面都是0的情况,这时候要进行处理)

也就是说一旦开头为零,就截去数组内的第一个值


class Solution:

    def printNumbers(self, n: int) -> List[int]:

        res=[]

        nums=['0']*n

        def dfs(x:int):

            if x==n:

                num=''.join(nums)

                while num.startswith('0'):

                    num=num[1:]

                if num:res.append(int(num))

                return

            for i in range(0,10):

                nums[x]=str(i)

                dfs(x+1)

        dfs(0)

        return res






Leetcode Day6 1的评论 (共 条)

分享到微博请遵守国家法律