首页 > 代码库 > LeetCode-Lexicographical Numbers
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.
Analysis:
The numbers are arranged in tree structure:
1
10 11 12 ... 19
100 101 ..... 109 | 110 111 .... 119 | .....
We just use DFS to go through the tree.
Solution:
1 public class Solution { 2 public List<Integer> lexicalOrder(int n) { 3 List<Integer> resList = new ArrayList<Integer>(); 4 for (int i = 1; i < 10; i++) { 5 lexicalOrderRecur(i, n, resList); 6 } 7 return resList; 8 } 9 10 public void lexicalOrderRecur(int cur, int n, List<Integer> resList) {11 if (cur > n) {12 return;13 }14 resList.add(cur);15 16 for (int i = 0; i < 10; i++) {17 if (10 * cur + i > n) {18 break;19 }20 lexicalOrderRecur(10 * cur + i, n, resList);21 }22 }23 }
LeetCode-Lexicographical Numbers
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。