算法题 13 构造特定数组的逆序拼接 (c++)

44 阅读1分钟

问题描述

小U得到了一个数字n,他的任务是构造一个特定数组。这个数组的构造规则是:对于每个i从1到n,将数字n到i逆序拼接,直到i等于n为止。最终,输出这个拼接后的数组。

例如,当n等于3时,拼接后的数组是 [3, 2, 1, 3, 2, 3]


测试样例

样例1:

输入:n = 3
输出:[3, 2, 1, 3, 2, 3]

样例2:

输入:n = 4
输出:[4, 3, 2, 1, 4, 3, 2, 4, 3, 4]

样例3:

输入:n = 5
输出:[5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5]

题解

#include <vector>
#include <iostream>
using namespace std;

vector<int> solution(int n) {
    int biao = 0;
    vector<int> f(6666666);
    int b = 1 ; 
    while(b<=n)
    {
        for(int i = n ; i >= b ;  i --)
        f[biao++] = i ;
        b++;
    }
 //   for(int i = 0 ; i < biao; i ++) cout<<f[i]<<" ";
 //   cout<<endl;
    vector<int> res(biao);
    for(int i = 0 ; i < biao; i ++) res[i]=f[i];
    return res;
}

int main() {
    vector<int> result1 = solution(3);
    cout << (result1 == vector<int>{3, 2, 1, 3, 2, 3}) << endl;

    vector<int> result2 = solution(4);
    cout << (result2 == vector<int>{4, 3, 2, 1, 4, 3, 2, 4, 3, 4}) << endl;

    vector<int> result3 = solution(5);
    cout << (result3 == vector<int>{5, 4, 3, 2, 1, 5, 4, 3, 2, 5, 4, 3, 5, 4, 5}) << endl;

    return 0;
}

略微类似于双指针。