题意:
给定一个整数 n, 返回从 1 到 n 的字典顺序。
例如,
给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。
请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。
思路:
10叉树的先序遍历
code:
class Solution:
def lexicalOrder(self, n: int) -> List[int]:
self.res = [0 for i in range(n)]
self.count = 0
def Ans_res(sample):
for i in range(10):
temp = sample * 10 + i
if temp <= n:
self.res[self.count] = temp
self.count += 1
Ans_res(temp)
else:
return
for i in range(1, 10):
temp = i
if temp <= n:
self.res[self.count] = temp
self.count += 1
Ans_res(temp)
return self.res