题目描述:
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1. 用返回一个整数列表来代替打印
2. n 为正整数
示例1
输入:1
返回值:[1,2,3,4,5,6,7,8,9]
解法一:Math.pow()
思路:
以 n=3 为例,我们取10的3次方为1000。当 n=3 的时候,我们需要打印从1到999的数字。因此,取范围为1 ~ 10^3-1,数组大小为 10^3-1,然后遍历赋值即可。
代码:
import java.util.*;
public class Solution {
public int[] printNumbers (int n) {
//以n=3为例,10^3=1000
int max = (int)Math.pow(10,n);
//max-1 = 999
int[] ret = new int[max-1];
//遍历赋值
for (int i=0;i<max-1;i++){
ret[i]=i+1;
}
return ret;
}
}
解法二:StringBuffer
思路:
与解法一基本一致,不同的是通过StringBuffer得到最大数,然后创建数组
代码:
import java.util.*;
public class Solution {
public int[] printNumbers (int n) {
//首先得到最大的数
StringBuffer sb = new StringBuffer();
for(int i=0; i < n; i++){
sb.append("9");
}
//遍历赋值
int maxValue = Integer.parseInt(sb.toString());
int[] resultArray = new int[maxValue];
for(int i=1; i <= maxValue; i++){
resultArray[i-1] = i;
}
return resultArray;
}
}