剑指 Offer 17. 打印从1到最大的n位数
题目描述
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
输入输出
1 2
   | 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9]
   | 
 
基本思路
词穷 直接看网站和代码解析吧 😢
java实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
   |  class Solution {     public int[] printNumbers(int n) {         int end = (int)Math.pow(10, n) - 1;         int[] res = new int[end];         for(int i = 0; i < end; i++)             res[i] = i + 1;         return res;     } }
 
  class Solution {     int[] res;     int count = 0;
      public int[] printNumbers(int n) {         res = new int[(int)Math.pow(10, n) - 1];         for(int digit = 1; digit < n + 1; digit++){                          for(char first = '1'; first <= '9'; first++){                                                   char[] num = new char[digit];                 num[0] = first;                 dfs(1, num, digit);             }         }         return res;     }
      private void dfs(int index, char[] num, int digit){         if(index == digit){                          res[count++] = Integer.parseInt(String.valueOf(num));             return;         }         for(char i = '0'; i <= '9'; i++){             num[index] = i;             dfs(index + 1, num, digit);         }     } }
 
  |