386. Lexicographical Numbers
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
Solutions
Solution: Depth-First Search
- Time complexity: O(n)
- Space complexity: O(n)
JavaScript
js
/**
* @param {number} n
* @return {number[]}
*/
const lexicalOrder = function (n) {
const result = [];
const generateNum = num => {
if (num > n) return;
for (let index = 0; index <= 9; index++) {
const current = num + index;
if (current > n) return;
if (index === 9 && !(current % 10)) return;
result.push(current);
generateNum(current * 10);
}
};
generateNum(1);
return result;
};