打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]
class Solution {
//先定义几个需要用到的全局变量
//初始化结果数组res
int[] res; //Math.pow返回的是double
char[] nums;
char[] loop = {'0','1','2','3','4','5','6','7','8','9'};
int count=0;//数组计数索引
int x = 0; //x表示递归到第几层
public int[] printNumbers(int n) {
nums = new char[n];
res = new int[(int)Math.pow(10,n)-1]; //Math.pow返回的是double
dfs(x,n);
return res;
}
public void dfs(int x,int n){ //x表示递归到第几层
//递归终止条件,x==n,此时要要结果数组res中添加数字
if(x==n){
String str = String.valueOf(nums);//把字符数组转换为字符串
int temp = Integer.valueOf(str); //把字符串转换为整数
if(temp!=0){ //跳过0
res[count] = temp ;//把字符串转换为整数后添加到结果数组中
count++; //计数索引加1
return;
}
return;
}
for(char ch:loop){ //对第x层的数字进行固定,然后继续向下一层递归
nums[x] = ch;
dfs(x+1,n);
}
}
}