leetcode 386. 字典序排数

Posted zhanzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 386. 字典序排数相关的知识,希望对你有一定的参考价值。

题目描述:

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

例如,

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

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


解法:

class Solution 
public:
    vector<int> lexicalOrder(int n) 
        vector<int> res;
        if(n <= 0)
            return ;
        else
            int val = 1;
            int left = n;
            while(left)
                while(left && val <= n)
                    res.push_back(val);
                    // cout<<n - left<<": "<<val<<endl;
                    left--;
                    if(val*10 <= n)
                        val*= 10;
                    else
                        val++;
                        while(val%10 == 0)
                            val /= 10;
                        
                    
                
                val /= 10;
                val++;
                while(val%10 == 0)
                    val /= 10;
                
            
            return res;
        
    
;

以上是关于leetcode 386. 字典序排数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 386 字典序排数[dfs 字典树] HERODING的LeetCode之路

LeetCode 386. 字典序排数 / 821. 字符的最短距离 / 388. 文件的最长绝对路径

386. 字典序排数

386. 字典序排数(中等)-迭代-全排列

使用DFS来解决“字典序排数”问题

使用DFS来解决“字典序排数”问题