赛码 基本算法 翻转数组
程序员文章站
2022-06-02 11:58:44
...
不知为何在赛码上提交了看不到提交记录...就来这儿保存一下
题目:
code:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int a[100006];
cin>>n;
for(int i =1;i<=n;++i){
cin>>a[i];
}
int num = 0;
int lastdownnum;
if(a[1]>a[2]) lastdownnum=a[1];
for(int i=2;i<n;++i){
if(a[i]>a[i-1] && a[i]>a[i+1]) lastdownnum=a[i];//上一个开始降的元素
if(a[i]<a[i-1] && a[i]<a[i+1]){//找到了不再继续降的元素
if(lastdownnum>a[i+1]){//特判即使这一段翻转了依然无法保持递增的情况
cout<<"no"<<endl;
return 0;
}
else num++;//统计递减序列段数
}
}
if(a[n]<a[n-1]) num++;
if(num==1) cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}
上一篇: 梅州自驾游线路推荐
下一篇: 大连冬季哪里好玩 带你玩转大连