字典序排序
给定一个整数 n, 返回从 1 到 n 的字典顺序。
例如,
给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。
请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。
解题思路
用函数栈(递归)用来去完成字典序排序。
import java.util.ArrayList;
import java.util.List; public class Solution {
public List<Integer> lexicalOrder(int n) {
List<Integer> res = new ArrayList<>();
for (int i = 1;i < 10 ;i++ ) {
lexicalOrder(i,res,n);
}
return res;
}
public void lexicalOrder(int num,List<Integer> res,int n) {
if(num > n) return;
res.add(num);
int t = num * 10;
for(int i = 0;i < 10;i++) {
lexicalOrder(t+i,res,n);
}
}
}