LeetCode-386. Lexicographical Numbers-思路详解-C++

来源:互联网 发布:mac桌面文件夹不见了 编辑:程序博客网 时间:2024/06/05 17:55

题目

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.

翻译

给定一个整数,返回从1~n的字典序排列。

例如:假设13.返回结果: [1,10,11,12,13,2,3,4,5,6,7,8,9].

思路

这个题目从题面上可以看出是一个构造的题目,而且是一个典型的回溯的问题。

代码

class Solution {public:    vector<int> lexicalOrder(int n) {        vector<int> res;        for(int i = 1; i < 10; i++){            dfs(i,n,res);        }        return res;    }    void dfs(int cur,int n,vector<int> &res){        if(cur > n ){            return;        }else{            res.push_back(cur);            for(int i = 0; i < 10; i ++){                if(10*cur+ i > n){                }else{                    dfs(10*cur+i,n,res);                }            }        }    }};
0 0