leetcode386.字典序排数

mac2026-10-04  1

1.题目描述

给定一个整数 n, 返回从 1 到 n 的字典顺序。

例如,

给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。

请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。

2.解题思路

将数列模拟成十叉树,先序遍历即可

3.代码实现

class Solution(object): def dfs(self,k,n,res): # 过滤掉第一个数 0 if k!=0: res.append(k) # 每一层次的遍历依赖于i的移动 for i in range(0,10): # 先序遍历 1,10,11,12,...,19,100,101,102,...199 # k*10+i>0:保证第一个数0不参与dfs if k*10+i<=n and k*10+i>0: self.dfs(k*10+i,n,res) def lexicalOrder(self, n): """ :type n: int :rtype: List[int] """ res=[] self.dfs(0,n,res) return res

 

最新回复(0)