【每日一题】排序子序列(贪心)

2023-11-03

题目来源
牛客网
链接:排序子序列

题目描述
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为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

解题思路
本题要求解的是排序子序列,排序子序列为非递增或者非递减,很多同学在这个非递增、非递减问题上很纠结,注意:非递减就是a[i]<=a[i+1],递减就是a[i]>a[i+1],非递增就是a[i]>=a[i+1],递增就是a[i]<a[i+1]。其实这个不理解网上搜一下就理解了。

本题依次比较整个数组;a[i+1]>a[i] ,则进入非递增序列判断,直到遍历到下一个值不大于等于为止count++,然后进行下一位置的判断;a[i+1]<a[i],则进入非递增序列判断,直到遍历到下一个值不小于等于为止count++,然后进行下一位置的判断; a[i+1] == a[i]不进行操作,++i进行下一位置遍历,因为相等既可以属于非递增序列,也可以属于非递减序列。

本题注意点:本题开始比较a[i+1]与a[i]进行比较,为了避免越界,数组定义为n+1个,同时给a[n] = 0;
a[n] = 0带来的影响,我们分为三种情况讨论:

  1. 若到a[n-1] 的最后一组是非递减序列,当i== n-1,a[i] > a[i+1],因为前面的数都是大于0的,这个输入条件已经说明了(去看看题目输入条件描述),里面的循环结束,i++,count++
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【每日一题】排序子序列(贪心) 的相关文章

随机推荐

  • Windows双系统Ubuntu18.04安装分区过程

    声明 由于这个寒假过长 从1月到9月 期间无数次作死操作 导致windows和ubuntu崩了N次 所以现在把以前的东西重新做一遍 windows和ubuntu双系统 首先在windows完好的情况下 进入 计算机管理 选择 磁盘管理 压缩
  • 唐先杰遇上区块链:要加薪,也要改变世界

    区块链能带来什么 对于唐先杰来说 是 加薪 的现实收益 也是 改变世界 的精神满足 唐先杰是旺链科技的区块链系统架构师 拥有10余年技术经验 接触到区块链以及FISCO BCOS开源社区之后 在社区伙伴的帮助下 他成功完成了对公司产品的升级
  • js中把数字转换成汉字输出

    前言 在js中把数字转换成汉字输出的方法 直接可以拿来用 方法一 支持7位 也就是最大1234567 案例 this toChinesNum 10101010 得到 一千零一十万一千零一十 数字转成汉字 params num 要转换的数字
  • el-tree的使用与样式修改大全

    el tree的使用与样式修改大全 一 样式篇 1 修改节点选中后的背景样式 el tree node focus gt el tree node content background color 5daaf0 背景色 2 节点hover后
  • 开源大数据平台 集群搭建及使用

    1 Hadoop集群搭建及使用 1 集群规划 2 虚拟机准备 1 创建虚拟机 具体步骤不再展示 2 配置网络 ping外网 ping baidu com 如果ping不通 修改如下文件 vi etc sysconfig network sc
  • Flutter Icons内置图标库MaterialIcons大全

    Flutter 中的图标组件 Icon 专门用于显示图标 如 Icon Icons check rounded color Colors white size 18 图集预览
  • 报错解决方案1

    遇到报错 TypeError conv2d received an invalid combination of arguments got numpy ndarray Parameter Parameter tuple tuple tup
  • catkin build 的使用

    1 catkin build vs catkin make 初学的时候一般我们用catkin make 但是相较于catkin build而言 并没有那么好使 对比如下 catkin make 同时编译工作空间下的所有包 速度慢 不灵活 c
  • C++(11):生成随机字符串

    C 11 产生随机数 c 11 随机数 风静如云的博客 CSDN博客 介绍了如何生成随机数 可以基于随机数生成随机字符串 include
  • 华为OD机试 - 字符串划分(Java)

    题目描述 给定一个小写字母组成的字符串 s 请找出字符串中两个不同位置的字符作为分割点 使得字符串分成三个连续子串且子串权重相等 注意子串不包含分割点 若能找到满足条件的两个分割点 请输出这两个分割点在字符串中的位置下标 若不能找到满足条件
  • HTML中的table表格

    表格标签 分为行 tr 和列 td 行及列都可以进行合并操作 table 定义表格 tr 定义行 td 定义列 先有行 后有列 th 多用于表头 定义表格中头部 加粗 border 边框大小 bordercolor 边框的颜色 cellpa
  • Spring的两种动态代理:Jdk和Cglib 的区别和实现

    一 原理区别 java动态代理是利用反射机制生成一个实现代理接口的匿名类 在调用具体方法前调用InvokeHandler来处理 而cglib动态代理是利用asm开源包 对代理对象类的class文件加载进来 通过修改其字节码生成子类来处理 1
  • 重构——重构原则

    何谓重构 目的在于不改变软件可观察行为的前提下 提高其可理解性 降低其修改成本 重构可能会在软件内部做修改 但是对软件的外部行为造成很小改变 或者不造成改变 与之相比的是性能优化 为何重构 程序的设计会逐渐腐败 当人们只为了短期目的 或者未
  • 实用工具系列 - Pycharm插件推荐

    博客主页 Passerby Wang的博客 CSDN博客 系统运维 云计算 Linux基础领域博主 所属专栏 实用工具系列 上期文章 实用工具系列 Pycharm安装下载使用 如觉得博主文章写的不错或对你有所帮助的话 还望大家多多支持呀 关
  • 云计算虚拟化:k8s二进制Master主备集群部署

    一 前言 无论从成本还是效率上考虑 k8s都极占优势 基本代表了未来趋势 官网推荐kubeadm配置 虽然方便 但掩盖了许多细节问题 k8s虽然咋看仅仅是个容器编排工具 但涉及的相关知识面非常广泛 如果说大数据的相关知识你需要花N天 K8S
  • do{...} while(0) 用意

    linux内核和其他一些开源的代码中 经常会遇到这样的代码 do while 0 这样的代码一看就不是一个循环 do while表面上在这里一点意义都没有 那么为什么要这么用呢 实际上 do while 0 的作用远大于美化你的代码 查了些
  • 人工智能革命:从ANI到AGI的道路

    从ANI到AGI的道路为什么这么难 没有什么比学习创造一台像人类一样聪明的电脑这种难以置信的创造更能让人欣赏人类的智慧了 建造摩天大楼 将人类置于太空中 弄清楚大爆炸如何发生的细节 这些都比了解我们自己的大脑或如何制造像它一样酷的东西要容易
  • docker harbor的安装使用以及镜像上传和拉取

    目录 harbor harbor安装 harbor上传和拉取镜像 上传 1 登录Harbor 2 打标签 3 上传镜像 拉取 1 登录Harbor 2 拉取镜像 harbor harbor是一个开源的容器镜像仓库 可用于存储和分发docke
  • 电脑怎么加快网页打开速度?加快网速。

    电脑怎么加快网页打开速度 加快网速 更换合适的dns可以直接加快网页打开速度 1 使用软件更换dns 下载地址 2 手动输入dns 1 win R键 输入 ncpa cpl 2 依次点击连接的网络 属性 Internet协议版本 TCP I
  • 【每日一题】排序子序列(贪心)

    题目来源 牛客网 链接 排序子序列 题目描述 牛牛定义排序子序列为一个数组中一段连续的子序列 并且这段子序列是非递增或者非递减排序的 牛牛有一个长度为n的整数数组A 他现在有一个任务是把数组A分为若干段排序子序列 牛牛想知道他最少可以把这个