首页 文章资讯内容详情

C ++中的词典数字

2026-06-04 1 花语

假设我们有一个整数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, ]