算法题:反转数组

来源:互联网 发布:网游 mac版 编辑:程序博客网 时间:2024/06/05 16:26

题目如下:《来源赛码网》


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){//有两次及以上反转,直接passfzOk=false;}lastTime =true;}}if(fzOk)System.out.println("yes");else System.out.println("no");}}



0 0