dfs函数只输出n位数的情况,相比于让一个函数输出1到最大的n位数可以大大简化。
小技巧:控制循环开始的起点。
class Solution {
List<Integer> res = new ArrayList<>();
public int[] printNumbers(int n) {
for(int i = 1; i <= n; i++){
dfs(i, "");
}
return res.stream().mapToInt(x -> x).toArray();
}
void dfs(int n, String num){
if(num.length() == n){
res.add(Integer.valueOf(num));
return;
}
int start = num.length() == 0 ? 1 : 0;
for(int i = start; i <= 9; i++){
dfs(n, num + i);
}
}
}