给你一个整数 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-10每一个数字一路走到尾,如果超过了则退回来加数
def lexicalOrder(n):
def dfs(num) :
if num > n : #这个数大于n就返回
return
ans.append(num)
for i in range(num * 10, num *10 +10): #一直添加并增加尾数
dfs(i)
ans = []
for num in range(1,10): # 从1-9开始
dfs(num)
return ans
n = 300
print(lexicalOrder(n))