思路挺简单 就是数的格式和超时改了一会儿
//思路不难 也很直接 就是这个思路容易超时 记得要用引用来节省时间
#include <stdio.h>
#include <vector>
using namespace std;
long long change(vector<long long>&v,int i){
if(v[i]>v[i-1]&&v[i]>v[i+1])return v[i-1]<v[i+1]?v[i+1]:v[i-1];
else return v[i];
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
vector<long long> v;
for(int i=0;i<n;i++){
long long temp ;
scanf("%lld",&temp);
v.push_back(temp);
}
for(int i =1;i<(v.size()-1);i++){
v[i] = change(v,i);
}
for(int i =0;i<v.size();i++){
printf("%d ",v[i]);
}
printf("\n");
v.clear();
}
return 0;
}
查看8道真题和解析
