C ++中的词典数字
假设我们有一个整数n。我们必须按字典顺序返回1到n。因此,例如,当给定13时,输出将为[1、10、11、12、13、2、3、4、5、6、7、8、9]。
为了解决这个问题,我们将遵循以下步骤-
定义一个大小为n的数组ret
curr:=1
对于i,范围为0至n–1
如果curr>=n,则curr:=curr/10
增加curr1
而curr可除以10,则curr:=curr/10
ret[i]:=curr
如果curr*10<=n,则设置curr:=curr*10
除此以外
返回ret
例子(C++)
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
cout << "[";
for(int i = 0; i<v.size(); i++){
cout << v[i] << ", ";
}
cout << "]"<<endl;
}
class Solution {
public:
vector<int> lexicalOrder(int n) {
vector <int> ret(n);
int curr = 1;
for(int i = 0; i < n; i++){
ret[i] = curr;
if(curr * 10 <= n){
curr*= 10;
} else {
if(curr>= n)curr /= 10;
curr += 1;
while(curr % 10 == 0)curr/=10;
}
}
return ret;
}
};
main(){
Solution ob;
print_vector(ob.lexicalOrder(20));
}输入项
20
输出结果
[1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 3, 4, 5, 6, 7, 8, 9, ]
热门推荐
10 女神节祝福语简短创意
11 婆婆66岁祝福语简短
12 节日对老公祝福语简短
13 小托班祝福语简短
14 冬至祝福语简短情话高级
15 小孩生日祝福语简短励志
16 情侣520的祝福语简短
17 新娘生孩子祝福语简短
18 开张祝福语简短小故事