排序子序列
来源:互联网 发布:beyonce running 知乎 编辑:程序博客网 时间:2024/06/05 20:26
Question
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.
如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2
Algorithm
一开始还自作聪明的用上升下降沿来做,但是这种方法很有问题,比如1212121这种情况,就是大大的bug。其实就直接求对递增,递减的情况计数就行。最后注意,最后一个数的情况。
Code
#include<iostream>#include<vector>using namespace std;int main(){ int n; while(cin>>n){ vector<int> v(n); for(int i=0;i<n;i++){ cin>>v[i]; } int i=0; int res=0; while(i<n-1){ while(i<n-1 && v[i]==v[i+1]) i++; if(i<n-1 && v[i]>v[i+1]){ res++; while(i<n-1 && v[i]>=v[i+1]) i++; i++; } else if(i<n-1 && v[i]<v[i+1]){ res++; while(i<n-1 && v[i]<=v[i+1]) i++; i++; } } if(i==n-1) cout<<res+1<<endl; else cout<<res<<endl; } return 0;}
阅读全文
0 0
- 排序子序列
- 排序子序列
- 排序子序列
- 【算法题】排序子序列
- 快速排序的划分子序列思想:
- hdu 1160 排序 + 最长上升子序列
- hdu1160(最长下降子序列+排序)
- 牛客网刷题笔记---求最短未排序子序列
- 合并已排序的两个子序列2
- 求所有可能排序与所有可能子序列
- hdu 1025 最长上升子序列+排序
- nyoj16 矩形嵌套 排序+最长增长子序列
- hdu 5811 Colosseo (拓扑排序 + 最长上升子序列)
- 冒泡排序图(最长上升子序列变式)
- 算法7.自然合并排序与最长公共子序列。
- 将数组划分最少数目的排序子序列
- 排序子序列-Java-牛客模拟三
- hdu 1160 排序+下降子序列变形 FatMouse's Speed
- docker install on ubuntu 14.04 server
- Zen Coding插件
- 百度图表插件功能
- springmvc案例一
- RecyclerView添加下拉刷新和上拉加载更多
- 排序子序列
- GCD使用经验与技巧浅谈
- 《Tensorflow和深度学习笔记》100页
- 通过BulkLoad的方式快速导入海量数据
- SSHD配置文件详解
- service 以及AIDL相关笔记
- Ruby--gem包管理命令
- 自组织神经网络
- 自动格式化银行卡号的EditText,每四位增加一个空格,并根据银行卡号判断该银行卡归属的银行及卡别