前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序子序列

排序子序列

作者头像
AI那点小事
发布2020-04-18 20:05:08
6930
发布2020-04-18 20:05:08
举报
文章被收录于专栏:AI那点小事AI那点小事

牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列. 如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2 输入描述: 输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)

第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。

输出描述: 输出一个整数表示牛牛可以将A最少划分为多少段排序子序列

输入例子: 6 1 2 3 2 2 1

输出例子: 2


AC代码:

代码语言:javascript
复制
/*
 * flag = 0 开始
 * flag = 1 严格递增(即不包含相等的情况)
 * flag = 2 严格递减(即不包含相等的情况)
 * 相等的时候我们什么也不做,最后对于我们结果加1即可
 */

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        int flag = 0;
        int res = 0;
        int last = in.nextInt();
        for(int i = 1 ; i < N ; i++){
            int now = in.nextInt();
            if (flag == 0){
                if ( now > last){
                    flag = 1;
                }else if(now < last){
                    flag = 2;
                }
            }else if( flag == 1){
                if ( now < last){
                    flag = 0;
                    res++;
                }
            }else{
                if ( now > last){
                    flag = 0;
                    res++;
                }
            }
            last = now;
        }
        //res++;
        System.out.println(res);

        in.close();
    }

}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档