386. 字典序排数

给定一个整数 n, 返回从 1 到 n 的字典顺序。

例如,

给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。

请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。

vector<int>ans;
class Solution {
public:
    void dfs(int id,int maxx){
         if(id>maxx)return ;
         ans.push_back(id);
         dfs(id*10,maxx);
         if((id+1)%10==0)return ;
         dfs(id+1,maxx);
    }
    vector<int> lexicalOrder(int n) {
        ans.clear();
        dfs(1,n);
        return ans;
    }
};

  

posted @ 2020-07-02 15:25  Xzavieru  阅读(141)  评论(0编辑  收藏  举报