题目:

链接:https://leetcode-cn.com/problems/lexicographical-numbers

  1. 给定一个整数 n, 返回从 1 n 的字典顺序。
  2. 例如,
  3. 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9]
  4. 请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000

答案:

时间:

10min

  1. class Solution:
  2. def lexicalOrder(self, n: int) -> List[int]:
  3. ans=[]
  4. def dfs(k):
  5. if k>n:return []
  6. res=[k]
  7. for i in range(10):
  8. num = k*10+i
  9. res+= dfs(num)
  10. return res
  11. for i in range(1,10):
  12. ans+=dfs(i)
  13. return ans

要点:

1. 回溯算法

找到回溯的逻辑最重要。

2. 看成N叉树的遍历

这题看成10叉树套模板也很棒。(前序遍历)

其他:

代码报错:无