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

    • 增加curr 1

    • 而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, ]

    以上是 C ++中的词典数字 的全部内容, 来源链接: utcz.com/z/358779.html

    回到顶部