目录

题目链接:

输入输出描述&&测试用例:

解析:

程序:


题目链接:

排序子序列_牛客笔试题_牛客网 (nowcoder.com)

输入输出描述&&测试用例:

测试用例:

输入:

6
1 2 3 2 2 1

输出:

2

解析:

题目描述:

将整型数组的连续的数分成若干的连续排序子序列(排序子序列:非递增和非递减排序),问能划分出多少个这样的子序列。

思路:

首先是连续的,那么我们找此排序子序列的基础上是遍历这个数组。

那么先明确一个排序子序列:

明确之后,我们需要在遍历数组的时候划分好两个区域。非递增序列只要满足递减序列的条件就可以进行统计,相对的非递减序列只要满足递增序列的条件就可以进行统计,如果相等就表示非递减非递增,此时跳到下一个值进行比较即可。

跳到某一个序列区域后(使用ifelse语句),可以声明一个计数器,进行++操作就可以统计有多少个字序列了。但是注意如果要跳出此区域的话需要进行循环(连续的),比如测试用例:

既然是遍历数组就需要注意边界控制。

程序:

使用C++程序进行编写,由于是输入n控制数组长度,所以我利用vector作为数组,利用resize一次性确定数组长度(也可以push_back),循环插入时可以利用[]进行操作。此处还涉及一个边界控制:因为遍历数组进行比较来确定区域的时候,是通过当前数和后一个数进行比较,必然用到下标进行访问。当下标超过数组长度就会发生越界访问。为了方便进行控制我们可以在resize的时候多设置一个,存储为0(数据只能是正整数)。因为这样遍历到最后一个元素就会进入非递增序列将最后一个序列进行统一。(也可以实现其他的控制边界方法)

#include <iostream>
#include <vector>
using namespace std;int main()
{int n = 0, count = 0;  // 输入数组长度和计数子序列个数vector<int> v;  // 存放数据的数组cin >> n; v.resize(n + 1);  // 为了方便边界控制,数组长度+1v[n] = 0;  // 最后一个元素置为0for (int i = 0; i < n; i++){cin >> v[i];}int i = 0;  // 开始遍历数组进行统计序列while (i < n){// 非递增区域if (v[i] > v[i+1])  // []中的i + 1就可以发现我们的边界控制的妙处了{count++;  // 序列数+1while (i < n && v[i] >= v[i + 1])  // 序列是一个连续区域,出需要循环遍历此区域完{  // 注意此处的等于,也表示是一个非递增区域哦i++;}// 结束循环,此处要么i == n 或者此处v[i] < v[i+1] 验证此处以及非递减区域了,此时i必须++,要不然将此数就会算入下一个区域,出现错误,主循环进入下一步即可i++;}else if (v[i] < v[i+1])  // 非递减区域,同理{count++;while (i < n && v[i] <= v[i + 1]){i++;}i++;}else{  // 值相等,跳过i++;}}cout << count << endl;  // 统计结束,输出结果return 0;
}

加油加油~

【每日训练】排序子序列相关推荐

  1. 【每日一题】排序子序列(波峰波谷问题)

    [每日一题]排序子序列(波峰波谷问题) 文章目录 [每日一题]排序子序列(波峰波谷问题) 1.题目来源 2.题目描述 3.输入/出描述 4.示例 5.解题思路 5.1 非递增非递减序列 5.2 访问边 ...

  2. 【百日冲大厂】第二篇,牛客网选择题+排序子序列+倒置字符串

    前言: 大家好,我是良辰丫,今天是刷题的第二篇,牛客网选择题+排序子序列+倒置字符串,每天都去努力,每天都庆幸今天的自己比昨天的自己更优秀,加油,为理想而努力吧!!!

  3. Java_[排序子序列]牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。

    链接:https://www.nowcoder.com/questionTerminal/2d3f6ddd82da445d804c95db22dcc471? 牛牛定义排序子序列为一个数组中一段连续的子 ...

  4. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  5. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  6. LeetCode每日训练2—有序矩阵中第K小的元素(7.2)

    题目描述 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素. 请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素. 示例: matrix = [ [ ...

  7. 蓝桥杯 ALGO-97 算法训练 排序

    问题描述 编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列. 输入格式:输入只有一行,即三个整数,中间用空格隔开. 输出格式:输出只有一行,即排序后的结果. 输入输出样例 样例输 ...

  8. 2019年9月Leetcode每日训练日志

    2019-09-16 #1171 从链表中删去总和值为零的连续节点 #1170 比较字符串最小字母出现频次 #1169 查询无效交易 #226 翻转二叉树 2019-09-15 #1190 反转每对括 ...

  9. 每日训练-day46

    day46-0707 选择题 1.当给WEB服务器接上网线的时候,它会自动发送一条ARP信息,使得接入网关能找的到它: 网关上会形成一条类似:2c 96 1e 3c 3e 9b - 192.168.1 ...

最新文章

  1. Linux memcached 安装
  2. for循环递减_判断语句_循环语句
  3. 数据中心新认证出现,UPTIME面临挑战
  4. 总结了24个C++的大坑,看你能躲过几个?
  5. abaqus实例详解_Abaqus接触分类、形成和定义
  6. ValueStack基础:OGNL
  7. 常用字符串处理函数汇总
  8. cr2032和br2032区别_钮扣电池CR2016和CR2032有什么区别?
  9. CentOs7设置主机名称,以及主机名称和ip的对应关系
  10. jQuery效果-----fadeIn()、fadeOut()、fadeToggle()、fadeTo()
  11. 机器学习-关键词:正则化、过拟合、决策树
  12. VDI成长之路:Windows桌面优化配置(持续更新-20120227)
  13. python入门心得_python学习心得:如何入门
  14. linux命令不断更新
  15. 互联网行业的那些缩写PM,RD,FE,UE,QA,OP,BRD,MRD,PRD,FSD
  16. devops实践: teamcity实现持续集成
  17. 盘点2008年值得一看的电视剧
  18. APP变现渠道该如何选择猫眼聚合SDK用经验为您解答
  19. / ./ ../路径含义
  20. order by是怎么工作的?

热门文章

  1. 反转!南大通报“教师性侵学生”事件,举报人因读研时未获国奖虚假举报
  2. Java实现XML格式化输出
  3. 庄子:当你一事无成,感到茫然无助时,读懂这几句话,会让你重新看待人生
  4. 正在考虑写一本书《中国有所没有围墙的大学,影响了世界几千年》第一章请给个反响...
  5. 广州大学 数据结构实验报告
  6. android markdown 笔记,安卓-纯纯写作 | 快速笔记 Markdown
  7. WebStorm、Idea使用git账户密码重置
  8. rtx3090显卡什么级别 rtx3090显卡什么水平 3090属于什么档次的显卡
  9. 7-15 福到了 c语言,福到啦L1-6 福到了(15 分) “
  10. 新一代三维GIS技术体系再升维