您的位置:首页 > 其它

需要排序的最短子数组长度

2016-01-17 17:07 477 查看
题目很简单,求需要排序的最短子数组长度

假设数组为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: