剑指 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); } } }
|