Description
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.Β
Β
Example 1:
Input: n = 13 Output: [1,10,11,12,13,2,3,4,5,6,7,8,9]
Example 2:
Input: n = 2 Output: [1,2]
Β
Constraints:
1 <= n <= 5 * 104
Solution
Python3
class Solution:
def lexicalOrder(self, n: int) -> List[int]:
res = []
def go(curr):
if curr > n: return
res.append(curr)
for k in range(10):
go(curr * 10 + k)
for k in range(1, 10):
go(k)
return res