输入数字 n
,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
class Solution {
public int[] printNumbers(int n) {
int MAX_VALUE = 0;
for(int i=0;i<n;i++){
MAX_VALUE = MAX_VALUE*10+9;
}
int[] result = new int[MAX_VALUE];
for(int i=1;i<=MAX_VALUE;i++){
result[i-1] = i;
}
return result;
}
}
class Solution {
private char[] numList;
private int[] result;
private StringBuilder sb;
private int index;
public int[] printNumbers(int n) {
int MAX_VALUE = 0;
for(int i=0;i<n;i++) MAX_VALUE = MAX_VALUE*10+9;
result = new int[MAX_VALUE];
numList = new char[]{'0','1','2','3','4','5','6','7','8','9'};
sb = new StringBuilder();
index = 0;
backTrack(0,n);
return result;
}
public void backTrack(int i,int n){
if(i==n){
int num = Integer.parseInt(sb.toString());//整数包会自动去除开头的0
if(num>0) result[index++] = num;//去除全为零
return;
}
for(int j=0;j<=9;j++){
sb.append(numList[j]);
backTrack(i+1,n);
sb.deleteCharAt(sb.length()-1);
}
}
}