386.字典序排数

50 阅读1分钟

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

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

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

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


function lexicalOrderStandard(n){
  let arr = [];
  let number = 1;
  for(let i = 1; i<= n;i++){
    arr.push(number);
    if( number * 10 < n){
      number *= 10
    }else{
      while( number % 10 === 9 || number +1 > n){
        number = Math.floor(number/10)
      }
      number++
    }
  }

  return arr
}