386. 字典序排数
已解答
中等
相关标签
相关企业
给你一个整数 n
,按字典序返回范围 [1, n]
内所有整数。
你必须设计一个时间复杂度为 O(n)
且使用 O(1)
额外空间的算法。
示例 1:
输入:n = 13 输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]
示例 2:
输入:n = 2 输出:[1,2]
提示:
1 <= n <= 5 * 104
class Solution:
def lexicalOrder(self, n: int) -> list[int]:
result = []
# 定义深度优先搜索函数
def dfs(current):
# 如果当前数字大于 n,直接返回
if current > n:
return
# 将当前数字添加到结果列表中
result.append(current)
# 尝试在当前数字后面添加 0 到 9
for i in range(10):
next_num = current * 10 + i
# 如果生成的下一个数字大于 n,停止添加
if next_num > n:
break
# 递归调用 dfs 函数
dfs(next_num)
# 从 1 到 9 开始进行深度优先搜索
for i in range(1, 10):
dfs(i)
return result