题目如下:《来源赛码网》
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"); } }