排序子序列

news2025/1/21 18:43:46

1 题目来源:
牛客网:排序子序列
2 题目描述
 牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.
  如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2
  
3 输入/出描述
  输入:
    输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
    第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。
  输出:
    输出一个整数表示牛牛可以将A最少划分为多少段排序子序列
4 示例
  输入:
  在这里插入图片描述
 输出:
在这里插入图片描述
5、解题思路
  题目中定义的排序子序列需要满足以下两个条件:
    (1) 连续的
    
    (2) 非递增或者非递减排序
    
5.1 非递增非递减序列

1,2,3,4,5         //递增排列 
9,8,7,6,5         //递减排列 
1,2,3,3,4,5,8,8   //非递减排列 
9,8,7,7,6,5,5,2,1 //非递增排列

在这里插入图片描述
5.2 访问边界的确定
  遍历数组,拿到数组的元素a[i]后,与它的左右邻进行比较,符合非递增非递减序列,就将排序子序列的计数+1。这里需要注意以下两点的问题。

5.2.1 越界问题
在这里插入图片描述5.2.2 波峰波谷问题!
在这里插入图片描述

6、代码展示
JAVA

public class arraydiv {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        int n=sc.nextInt();
        //创建一个数组长度为n的数组
      int[] nums =new int[n];
      //给数组赋值
        for (int i = 0; i < n; i++) {
            nums[i]=sc.nextInt();
        }
        //定义一个sum接收返回值
        //数组子数组最少为一(1s是数组本身)
        int sum=1;
        //遍历数组找到
        for (int i = 1; i < n-1; i++) {
            if (nums[i-1]<nums[i]&&nums[i]>nums[i+1]||nums[i-1]>nums[i]&&nums[i]<nums[i+1]) {
                //条件符合sum++
                sum++;
                //  //当下标未访问到n-3时,这里的i++已经比较过了,则需要跳过
                if (i!= n-3) {
                    i++;
                }
            }

        }
        System.out.println(sum);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ashampoo Burning Studio创建可启动磁盘

Ashampoo Burning Studio创建可启动磁盘 Ashampoo的产品通常适合质量&#xff0c;但在其中&#xff0c;它是世界上最好的软件之一&#xff0c;名为Ashampoo Burning Studio。与著名的Nero程序相比&#xff0c;该软件几乎一无是处&#xff0c;所有用于制作、写入和复制光盘的软件…

Python Tutorial——模块

如果你从Python解释器中退出&#xff0c;并且再次进入&#xff0c;你会发现你以前定义的函数和变量都已经丢失了。所以&#xff0c;如果你想写一个在某种程度上更长的程序&#xff0c;使用一个文本编辑器来准备解释器的输入会使情况有所好转&#xff0c;并且使用文件代替输入来…

最简单的方式实现Zotero文件同步+坚果云在多台电脑设备之间

应用场景&#xff1a; 放假回家&#xff0c;只带了笔记本搞科研的好童靴&#xff0c;发现实验室台式机的zotero中的PDF没办法在笔记本上读取。于是探索了一下午如何不重新在网页上保存下载台式机中的PDF&#xff0c;轻松获取异地的文献。 方式一&#xff1a; 氪金付费zotero…

参数估计与假设检验

推断统计&#xff1a;研究如何利用样本数据来推断总体特征 描述统计&#xff1a;描述一组数据的特征 参数估计&#xff1a;利用样本信息估计总体特征 假设检验&#xff1a;利用样本信息判断对总体的假设是否成立 一.参数估计 就是对于总体指标的估计 估计&#xff1a;根据…

免费l2接口有多少种类型?

免费l2接口是一个预先定义的函数&#xff0c;它的目的是让开发人员和开发人员无需访问源代码&#xff0c;也无需访问源代码&#xff0c;也无需理解其内部工作。免费l2接口有多少种类型&#xff1f; 有四种类型的股票l2接口: RPC&#xff1a;通过处理(或任务)共享的数据缓冲区…

SpringBoot整合RabbitMQ实现死信队列

文章目录概念介绍什么是死信死信队列应用工程搭建环境说明搭建步骤实现死信准备Exchange&Queue监听死信队列方式一——消费者拒绝&否认方式二——超过消息TTL方式三——超过队列长度限制代码仓库前面一文通过 Java整合RabbitMQ实现生产消费&#xff08;7种通讯方式&…

Spark的运行模式介绍

Spark的运行模式 本地模式&#xff08;Local&#xff09; 一般用做测试&#xff0c;测试代码的逻辑是否正确 本地模式&#xff0c;只启动一个Driver进程&#xff0c;没有Executor进程的&#xff0c;所有Task都运行在Driver进程中 集群模式 &#xff08;Cluster&#xff09; 一…

医疗挂号网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 管理员功能&#xff1a; 1、管理挂号须知、帮助信息 2、增删改查资讯类型、健康资讯信息 3、增删改查医生职称信息、医生…

装载问题 ——回溯法(Java)

装载问题 ——回溯法&#xff08;Java&#xff09; 文章目录装载问题 ——回溯法&#xff08;Java&#xff09;1、 问题描述1.1 装载问题1.2 转换问题2、算法设计2.1 可行性约束函数2.2 上界函数2.3 解空间树2.4 剪枝函数2.5 算法设计3、程序代码4、参考资料1、 问题描述 有一…

Hadoop安装准备

虚拟机的安装 配置了静态IP地址&#xff08;192.168.1.100&#xff09; 关闭与禁用了防火墙 安装了vim编辑器 虚拟机克隆 克隆出master虚拟机 以同样的步骤克隆出slave1和slave2 虚拟机配置 配置master虚拟机 启动虚拟机 设置主机名 命令&#xff1a;hostname…

C#语言和面向对象OOP

1、【重点面试题】面向对象的三大特性 封装 &#xff1a;隐藏对象的属性&#xff0c;并实现细节&#xff08;方法&#xff09;&#xff0c;对外提供接口&#xff0c; public全局&#xff0c;protected子类&#xff0c;internal同集&#xff0c;隐藏private 同类&#xff0c;pub…

英文文章写作|文献管理|​​​​​​​阅读文献|引用文献|国内文章

目录 英文文章写作 1.阅读10篇文献&#xff0c;总结100个常用句型和常用短语 2.找3-5篇技术路线和统计方法与你的课题接近的文章&#xff0c;精读 3.针对论文的每一部分&#xff0c;尤其是某种具体方法、要讨论的某一具体方面&#xff0c;各找5-8 篇文献阅读&#xff0c;充…

使用HTMLTestRunner.py生成测试报告

1、如何收集测试结果&#xff1f; 使用第三方封装好类HTMLTestRunner.py生成HTML测试报告 # encoding:utf-8 import unittest import time from HTMLTestRunner import HTMLTestRunner class MyTestCase(unittest.TestCase): # 每条用例初始化 def setUp(s…

大数据技术之Spark基础解析

大数据技术之Spark基础解析 第1章 Spark概述 1.1什么是Spark 什么是Spark? 大数据的电花火石。 Spark类似于MapReduce的低延迟的交互式计算框架。 Spark是UC Berkeley AMPLab开发的是一种计算框架&#xff0c;分布式资源工作交由集群管理软件&#xff08;Mesos、YARN&am…

Unity Addressables资源管理 打包路径设置

1.全局路径设置窗口的菜单位置 或 2.窗口界面 初始&#xff1a; Local&#xff1a;本地路径 Remote&#xff1a;远程路径 build指资源包生成位置 Load指资源包加载路径 BuildTarget:一个路径变量 Built-In 是内置默认的本地路径EditorHosted 则是编辑器和【托管服务】一起使…

零代码是什么?

上有国家层面的数字中国&#xff0c;数字经济的顶层规划&#xff0c;下有信息化飞速发展让组织、个人都深切体会到了信息技术带给生活的便利&#xff0c;如今信息化技术领域热度很高的低代码&#xff08;LowCode&#xff09;和零代码&#xff08;No-Code&#xff09;又开始进入…

太强了,GitHub白嫖的SpringCloud微服务进阶宝典,啃完吊打面试官

前言 自 2014 年起&#xff0c;微服务技术一直火热至今。随着越来越完善的微服务技术栈的发布&#xff0c;以及越来越多的微服务项目实际的落地和上线&#xff0c;使用 Java 技术栈的企业应该都在尝试或者已经落地了各自的微服务项目。同时&#xff0c;通过招聘网站的信息和每…

C# CallerMemberName,CallerFilePath,CallerLineNumber的使用

总目录 文章目录总目录前言一、作用二、使用1.案例三、使用场景总结前言 本文主要介绍CallerMemberName&#xff0c;CallerFilePath&#xff0c;CallerLineNumber的使用。 一、作用 本文将介绍的三个特性作用如下&#xff1a; CallerMemberName 允许获取方法调用方的方法或属…

基于STM32与PCA9685制作四足机器人(代码开源)

前言&#xff1a;本文为手把手教学基于STM32的四足机器人项目——JDY-31蓝牙控制&#xff0c;特别地&#xff0c;本次项目采用的是STM32作为MCU。四足机器人的支架为3D打印件&#xff0c;SG90舵机驱动机器人实现姿态运动。借助PCA9685舵机驱动板实现12路PWM波控制&#xff0c;更…

基于java+springboot+mybatis+vue+mysql的留守儿童爱心网站

项目介绍 随着留守儿童爱心管理的不断发展&#xff0c;留守儿童爱心网站在现实生活中的使用和普及&#xff0c;留守儿童爱心管理成为近年内出现的一个热门话题&#xff0c;并且能够成为大众广为认可和接受的行为和选择。设计留守儿童爱心网站的目的就是借助计算机让复杂的管理…