386. 字典序排数

161 阅读1分钟

386. 字典序排数

给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。

你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。

 

示例 1:

输入:n = 13
输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]

示例 2:

输入:n = 2
输出:[1,2]  

提示:

1 <= n <= 5 * 104

代码实现

/**
 * @param {number} n
 * @return {number[]}
 */
var lexicalOrder = function (n) {
    let num = 1;
    const res = [];
    while (res.length < n) {
        while (num <= n) {
            res.push(num);
            num *= 10;
        }
        while (num % 10 === 9 || num > n) {
            num = Math.floor(num / 10)
        }
        num++;
    }
    return res;
};