1. 程式人生 > >386.字典樹排序

386.字典樹排序

給定一個整數 n, 返回從 到 的字典順序。

例如,

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

請儘可能的優化演算法的時間複雜度和空間複雜度。 輸入的資料 小於等於 5,000,000。

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;
    }
};