剑指 Offer 17. 打印从1到最大的n位数
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);}}
}