Given an integer n, return 1 - n in lexicographical order.
For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].
Please optimize your algorithm to use less time and space. The input size may be as large as 5,000,000.
按字典序求所给范围数字列表
回溯,dfs
class Solution { List<Integer> res; public List<Integer> lexicalOrder(int n) { res = new ArrayList<>(); for (int i=1; i<10; i++) { if (i > n) break; dfs(n, i); } return res; } public void dfs(int n, int cur) { if (cur > n) return; res.add(cur); for (int i=0; i<10; i++) { int next = cur * 10 + i; if (next > n) return; dfs(n, next); } } }