386. Lexicographical Numbers
2016-08-21 16:28
141 查看
Problem
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.
Code
class Solution { public: vector<int> lexicalOrder(int n) { vector<int> res; if(n <= 9) { for(int i = 1; i <= n; ++i) res.push_back(i); } else { //如果大于9的时候就按照顺序 递归枚举 for(int i = 1; i <= 9; ++i) { res.push_back(i); dfs(res, i, n); } } return res; } void dfs(vector<int>& res, int start, int n) { int next_num = 10 * start; if(next_num <= n) { //计算差值 ,如果差值超过9那么 就从1-9继续下一层的搜索 int diff_num = n - next_num; diff_num = diff_num > 9 ? 9 : diff_num; for(int i = 0; i <= diff_num; ++i) { int tmp_num = next_num + i; res.push_back(tmp_num); dfs(res, tmp_num, n); } } } };
相关文章推荐
- [leetcode] 386. Lexicographical Numbers
- 386. Lexicographical Numbers
- LeetCode - 386. Lexicographical Numbers
- 386. Lexicographical Numbers
- 386. Lexicographical Numbers
- LeetCode笔记:386. Lexicographical Numbers
- Leetcode算法学习日志-386 Lexicographical Numbers
- [LeetCode386]Lexicographical Numbers(n以内的数字按字典序输出)
- Leetcode刷题:386. Lexicographical Numbers
- 386. Lexicographical Numbers
- 386. Lexicographical Numbers
- [LeetCode 386] Lexicographical Numbers(Python)
- 386. Lexicographical Numbers
- LeetCode 386 Lexicographical Numbers
- 386. Lexicographical Numbers
- LeetCode 386. Lexicographical Numbers
- Lexicographical Numbers
- 【Leetcode】386. Lexicographical Numbers
- 386. Lexicographical Number
- leetcode---Lexicographical Numbers