🚩传送门:牛客题目
力扣题目

题目

输入数字 [NC]288. 打印从 1 到最大的 n 位数 - 图1,按顺序打印出从 [NC]288. 打印从 1 到最大的 n 位数 - 图2 到最大的 [NC]288. 打印从 1 到最大的 n 位数 - 图3 位十进制数。比如输入 [NC]288. 打印从 1 到最大的 n 位数 - 图4,则打印出 1、2、3 一直到最大的 [NC]288. 打印从 1 到最大的 n 位数 - 图5 位数 [NC]288. 打印从 1 到最大的 n 位数 - 图6

示例 1:

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

解题思路:模拟

[NC]288. 打印从 1 到最大的 n 位数 - 图7 位数最大 [NC]288. 打印从 1 到最大的 n 位数 - 图8,而[NC]288. 打印从 1 到最大的 n 位数 - 图9,同理可得 [NC]288. 打印从 1 到最大的 n 位数 - 图10位数最大 [NC]288. 打印从 1 到最大的 n 位数 - 图11,而 [NC]288. 打印从 1 到最大的 n 位数 - 图12,因此从[NC]288. 打印从 1 到最大的 n 位数 - 图13枚举到 [NC]288. 打印从 1 到最大的 n 位数 - 图14

复杂度分析

时间复杂度:[NC]288. 打印从 1 到最大的 n 位数 - 图15,需要遍历[NC]288. 打印从 1 到最大的 n 位数 - 图16次。

空间复杂度:[NC]288. 打印从 1 到最大的 n 位数 - 图17,需要存储[NC]288. 打印从 1 到最大的 n 位数 - 图18个元素。

我的代码

  1. class Solution {
  2. public int[] printNumbers(int n) {
  3. // 3位数最大999,而10^3=1000
  4. int end = (int)Math.pow(10,n);
  5. int [] array = new int [end-1];
  6. for(int i = 0;i<array.length;i++){
  7. array[i] = i+1;
  8. }
  9. return array;
  10. }
  11. }