leetpycode/medium/lexicographical_numbers.py

20 lines
671 B
Python

# https://leetcode.com/problems/lexicographical-numbers
from typing import List
class Solution:
def lexicalOrder(self, n: int) -> List[int]:
result: List[int] = []
s: List[int] = [int(x) for x in list(str(n))]
def iterate(curr: int, length: int, curr_index: int):
if curr_index >= len(s):
return
for num in range(1 if curr_index == 0 else 0, 10):
new_curr = (curr * 10) + num
if new_curr > n:
break
result.append(new_curr)
iterate(new_curr, length + 1, curr_index + 1)
iterate(0, 0, 0)
return result