问题描述
小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;
}
略微类似于双指针。