【c++】【leetcode386】字典序排序

【c++】【leetcode386】字典序排序,第1张

leetcode 386 字典序排序

解题思路
  • 要求线性时间算法
  • 空间花销为常数

观察字典序排序能得出以下结论:

  • 每一组数以10为分界
  • 如果到某个以9结尾的数或者到最后一位数,就说明当下这一组数结束了

使用递归会有额外的空间花销,所以这里使用迭代去实现

class Solution {
public:
    vector<int> lexicalOrder(int n) {
        vector<int> ans(n);
        int number = 1;
        for(int i = 0;i < n;i++){
            ans[i] = number;
            if(number * 10 <= n)number *= 10;
            else {
                while(number % 10 == 9 || number + 1 > n){
                    number /= 10;
                }
                //更新到下一组
                number++;
            }
        }
        return ans;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/676453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存