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