题目如下:《来源赛码网》
import java.util.Scanner;
/**
* 反转数组
* 通过判断反转的次数来进行结果的输出,没有要求输出最后的数组
* 思路:从第一个元素遍历:设置第一个为最大元素:若下一个元素小于此则表示反转了一次 如:6 5
* 若 下下个元素也小于max则没有反转 如 6 5 4
* 若下下个元素大于上一个元素表示也反转了 如 7 5 6
* 计算总共反转的次数,大于1则表示不可以
* @author isc
*
*/
public class case10 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
int [] sz = new int[len];
int max=0;
int count=0;//反转的次数,两次则直接退出
boolean fzOk=true;
boolean lastTime=false;//上次是否反转后的数组
for(int i=0;i<len;i++){
sz[i]=sc.nextInt();
if(sz[i]>max){
lastTime=false;
max=sz[i];
}else{
if(!lastTime){
count++;
}
if(sz[i]>sz[i-1]){//防止出现 6 4 3 5 7这种情况
count++;
}
if(count>1){//有两次及以上反转,直接pass
fzOk=false;
}
lastTime =true;
}
}
if(fzOk)System.out.println("yes");
else System.out.println("no");
}
}