386 Lexicographical Numbers 字典序排数

给定一个整数 n, 返回从 1 到 n 的字典顺序。
例如,
给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。
请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。
详见:https://leetcode.com/problems/lexicographical-numbers/description/

C++:

class Solution {
public:
    vector<int> lexicalOrder(int n) {
        vector<int> res(n);
        int cur=1;
        for(int i=0;i<n;++i)
        {
            res[i]=cur;
            if(cur*10<=n)
            {
                cur*=10;
            }
            else
            {
                if(cur>=n)
                {
                    cur/=10;
                }
                cur+=1;
                while(cur%10==0)
                {
                    cur/=10;
                }
            }
        }
        return res;
    }
};

 参考:https://www.cnblogs.com/grandyang/p/5798275.html

posted on 2018-04-15 20:30  lina2014  阅读(239)  评论(0编辑  收藏  举报

导航