Lexicographical Numbers
Given an integer n, return 1 - n in lexicographical order.
For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].
Please optimize your algorithm to use less time and space. The input size may be as large as 5,000,000.
Subscribe to see which companies asked this question.
代码:
class Solution {
public:
vector<int> lexicalOrder(int n) {
vector<int>ans;
int cur=1;
for (int i=1; i<=n; i++)
{
ans.push_back(cur);
if (cur*10<=n)
{
cur*=10;
}
else if (((cur+1)<=n)&&(cur%10!=9))
{
cur++;
}
else
{
while(cur%10==9||cur==n)
{
cur/=10;
}
cur++;
}
}
return ans;
}
};