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;
}
};
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)