题目链接:https://leetcode.com/problems/lexicographical-numbers/
题目:
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.
思路:
回溯基本题。。。
算法:
public List<Integer> lexicalOrder(int n) {
for (int i = 1; i < 10; i++) {
if(i>n)
break;
dfs(n,i);
}
return res;
}
List<Integer> res = new ArrayList<Integer>();
public void dfs(int n, int cur) {
if (cur > n)
return;
res.add(cur);
for (int i = 0; i < 10; i++) {
int nc = cur * 10 + i;
if (nc > n)
return;
dfs(n, nc);
}
}