# leetcode: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.

Subscribe to see which companies asked this question

public class Solution {
public List<Integer> lexicalOrder(int n) {
List<Integer> ans = new LinkedList<>();
for(int i = 1; i < 10; ++i)
order(n, i, ans);
return ans;
}

public void order(int n, int base, List<Integer> list){
if(base > n){
return;
}
for(int i = 0; i < 10; ++i){
order(n, base * 10 + i,list);
}
}
}

public class Solution {
static List<Integer> ans = new LinkedList<>();
public List<Integer> lexicalOrder(int n) {
ans.clear();
for(int i = 1; i < 10; ++i)
order(n, i, ans);
return ans;
}

public void order(int n, int base, List<Integer> list){
if(base > n){
return;
}
for(int i = 0; i < 10; ++i){
order(n, base * 10 + i, list);
}
}
}

08-22 1559

08-21 1074

09-04 115

03-14 577

10-24 4885

05-28 20

08-26 751

11-21 2951