LeetCode 386. Lexicographical Numbers
考点 | 难度 |
---|---|
DFS | Medium |
题目
Given an integer n, return all the numbers in the range [1, n] sorted in lexicographical order.
You must write an algorithm that runs in O(n) time and uses O(1) extra space.
思路
DFS
10 -> next recursion: 100(->next recursion 1000), 101,102…
next loop: 11 -> next recursion: 110, 111,112…
next loop: 12 -> next recursion: 120, 121,122…
From 0 to 9 different from the dfs call in method lexicalOrder
答案
class Solution(object):
def lexicalOrder(self, n):
def dfs(k, res):
if k <= n:
res.append(k)
t = 10*k
if t <= n:
for i in range(10):
dfs(t + i, res)
res = []
for i in range(1, 10):
dfs(i, res)
return res