Lexicographical Numbers
MediumDepth-First SearchTrie
Solution
Solution1: Sort
export function lexicalOrder(n: number): number[] {
return Array.from({ length: n }, (_, i) => i + 1).sort();
}
Complexity
- Time:
O(NlogN)
- Space:
O(1)
sort
로 인하여N
만큼의 추가 공간이 필요하지만 고려하지 않음
Solution2: DFS
export function lexicalOrder(n: number): number[] {
const answer: number[] = [];
function dfs(num: number): void {
if (n < num) {
return;
}
answer.push(num);
for (let digit = 0; digit < 10; digit++) {
dfs(10 * num + digit);
}
}
for (let i = 1; i < 10; i++) {
dfs(i);
}
return answer;
}
Complexity
- Time:
O(N)
- Space:
O(1)