Leetcode 386.字典序排数
1 题目描述(Leetcode题目链接)
给定一个整数 n, 返回从 1 到 n 的字典顺序。
例如,
给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。
请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。
2 题解
深度优先搜索就可以了。
class Solution:
def lexicalOrder(self, n: int) -> List[int]:
res = []
def dfs(num, n):
for i in range(10):
if num*10 + i <= n:
res.append(num*10 + i)
dfs(num*10 + i, n)
for i in range(1, 10):
if i <= n:
res.append(i)
dfs(i, n)
return res
直接排序。
class Solution:
def lexicalOrder(self, n: int) -> List[int]:
return sorted(range(1, n+1), key = str)