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