Java排序子序列

排序子序列

排序子序列题目连接
Java排序子序列_第1张图片

做题思路

根据题意的非递增序列和非递减序列,可以分为这两个序列
在这里插入图片描述

题目给的例子也代表了所有的情况

①arr[i] > arr[i+1]
②arr[i] < arr[i+1]
③arr[i] = arr[i+1]

但有一个情况需要注意

当 i 遍历到结尾时,i+1越界了
这时我们可以在new数组的时候,给数组长度+1,就完美的解决了这个问题

代码实现

import java.util.*;
public class Main{
     
    public static void main(String[] args){
     
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] arr=new int[n+1];
        for(int i=0;i<n;i++){
     
            arr[i]=scanner.nextInt();
        }
        
        int i=0;
        int count=0;
        while(i<n){
     
            //三种情况
            //①arr[i]比下一个小(非递减序列)
            if(arr[i]<arr[i+1]){
     
               while(i<n && arr[i]<arr[i+1]){
     
                   i++;
               }
                //一个序列遍历完了
                count++;
                //去下一个序列
                i++;
            //②arr[i]等于下一个
            }else if(arr[i]==arr[i+1]){
     
                i++;
                //③arr[i]比下一个大(非递增序列)
            }else{
     
                while(i<n&&arr[i]>arr[i+1]){
     
                    i++;
                }
                count++;
                i++;
            }
        }
        System.out.println(count);
    }
}

在这里插入图片描述

你可能感兴趣的:(排序子序列)