Back to all solutions
#386 - Lexicographical Numbers
Problem 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.
Solution
/**
* @param {number} n
* @return {number[]}
*/
var lexicalOrder = function(n) {
const result = [];
let value = 1;
for (let i = 0; i < n; i++) {
result.push(value);
if (value * 10 <= n) {
value *= 10;
} else {
while (value % 10 === 9 || value >= n) {
value = Math.floor(value / 10);
}
value++;
}
}
return result;
};