需要排序的最短子数组长度
2016-01-17 17:07
477 查看
题目很简单,求需要排序的最短子数组长度
假设数组为a b c d e f g h i j k l m n
如果abc是有序的,mn是有序的,至于中间的defghijkl是无序的,我们可以得知,如果是正常升序序列,左边的一定是小于右边的任意数值,右边的一定大于左边的任意数值。
所以我们从后往前遍历,如果某个元素大于右边最小的元素,就标记,一直遍历到最左边
从前往后遍历,如果某个元素小于左边的最大的元素,则标记,一直遍历到最右边
程序如下
假设数组为a b c d e f g h i j k l m n
如果abc是有序的,mn是有序的,至于中间的defghijkl是无序的,我们可以得知,如果是正常升序序列,左边的一定是小于右边的任意数值,右边的一定大于左边的任意数值。
所以我们从后往前遍历,如果某个元素大于右边最小的元素,就标记,一直遍历到最左边
从前往后遍历,如果某个元素小于左边的最大的元素,则标记,一直遍历到最右边
程序如下
#include<iostream> #include <hash_map> #include <algorithm> using namespace std; int a[]={1,5,3,4,2,6,7}; int num=7; int minpos,maxpos; int minnum=INT_MAX,maxnum=INT_MIN; void findArray(int len) { int i; for(i=len-1;i>=0;i--) { if(a[i]>minnum) minpos=i; minnum=std::min(a[i],minnum); } for(i=0;i<len;i++) { if(a[i]<maxnum) maxpos=i; maxnum=max(a[i],maxnum); } } int main() { findArray(7); return 0; }
相关文章推荐
- 如何为Joomla主流模板添加统计代码
- 派生类是否包含有基类的private成员?
- 614A Link/Cut Tree
- Mac常用功能整理
- UVA10954 Add All (优先队列)
- 玻璃钢机翼
- 610C Harmony Analysis
- Java Nio 七、Java NIO Selector
- DoNet开源项目-基于Amaze UI的点餐系统
- Test注解的两个属性(转)
- Android 笔记 Intent and Bundle day7
- 610B Vika and Squares
- 610A Pasha and Stick
- MapReduce教程(一)基于MapReduce框架开发
- 0117 面向对象OOP有关方法、类、构造方法及权限修饰符的练习
- 606A Magic Spheres
- drbd+cronsync高可用mysql一:drbd安装配置使用
- maven项目导入报错
- JAVA小项目(1)——租车系统
- 关于指针的思考与理解