题目
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
示例 1:
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]
说明:
用返回一个整数列表来代替打印
n 为正整数
思路
第一种思路,通过递归来完成
第二种思路,直接调用Math类中的pow方法来完成
代码
class Solution {
public int theMax(int n){
if(n==1) return 9;
else {
int ten=1;
for(int i=1;i<=n-1;i++){
ten=ten*10;
}
return 9*ten+theMax(n-1);
}
}
public int[] printNumbers(int n) {
int tMax=theMax(n);
int[] res =new int[tMax];
for(int i=0;i<tMax;i++){
res[i]=i+1;
}
return res;
}
}
-------------------------------------
方法2
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;
}
}