最短排序

原创 2016年08月28日 16:48:37

如题:
对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。
给定一个整数数组A及它的大小n,请返回最短子数组的长度。
测试样例:[1,5,3,4,2,6,7],7
返回:4
这一题,我开始想的是先进行排序,然后再和排好序的数组一一对应进行比较,这样找到最短需要排序的最短子数组,今天看了后边其他网友在牛客网上写的算法,真是太赞了,现在记录如下:
两次循环,第一次,先找到当前以扫描过的元素中的最大值,判断下一个元素是否小于这个最大值,若小于,则记录该为排序元素的下标,若大于,则更新最大值。(做一次判断,若没有记录下标,则说明数组有序,返回零。)
第二次循环,从后往前,找到已扫描过的元素中最小的元素,判断它的下一个元素是否小于最小元素,若大于,则记录元素下标,若小于,则更新最小值。
这样,就找到了两个下标,分别表示前边排好序元素的下一个元素和后边排好序元素的前一个元素,后边的下标减去前边的下标+1就是要排序的最短子数组长度。
记录huangjunm同学的代码如下:

int findShortest(vector<int> A, int n) {
        // write code here
        int k = -1;
        int max = A[0];
        for(int i=1;i<n;i++){
            if(max > A[i])
                k = i;
            else
                max = A[i];
        }
        if(k==-1)return 0;
        int m = -1;
        int min = A[n-1];
        for(int i=n-2;i>=0;i--){
            if(min < A[i])
                m = i;
            else
                min = A[i];
        }
        return k-m+1;
    }

若有不对之处,敬请指正。

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

题目很简单,求需要排序的最短子数组长度 假设数组为a b c d e f g h i j k l m  n 如果abc是有序的,mn是有序的,至于中间的defghijkl是无序的,我们可以得知,如...
  • lycommand
  • lycommand
  • 2016年01月17日 17:07
  • 774

最短排序子数组

对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。 给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中...
  • li563868273
  • li563868273
  • 2016年01月11日 10:45
  • 363

有10000000条数据,用以下什么排序算法用时最短

网易2017实习生招聘笔试题-Java开发工程师 有10000000条数据,用以下什么排序算法用时最短 A 堆排序 B 快速排序 C 希尔排序 D 归并排序 个...
  • xhyxxx
  • xhyxxx
  • 2017年03月25日 15:54
  • 502

动态规划-最短排序

题目: 对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 结果:...
  • li563868273
  • li563868273
  • 2016年05月03日 17:17
  • 947

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

题解:方法是从后面往前遍历找出比已遍历的数的最小值大的位置1,再从前面遍历找出比已遍历数的最大值小的位置2,然后位置2减去位置1加上1就是长度。  eg; 1 5 4 2 3   ,位置1=2,位置...
  • dawn_after_dark
  • dawn_after_dark
  • 2017年02月16日 21:14
  • 304

最短排序

对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 返回:4  /...
  • u014041033
  • u014041033
  • 2016年04月06日 10:59
  • 237

【刷题之路】最短子数组问题

对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。 给定一个int数组A和数组的大小n,请返回一个整型,代表所求序列的长度。保证A中元素均为正整数。 我们需要确定最短子数组,...
  • zyn2609530
  • zyn2609530
  • 2016年06月13日 11:11
  • 332

拓补排序

简单粗暴的开始 拓补排序实际上是图的一种zuozh
  • SwineX00
  • SwineX00
  • 2014年10月07日 15:23
  • 573

编程 最短排序

对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。给定一个整数数组A及它的大小n,请返回最短子数组的长度。class ShortSubsequence { public: i...
  • qbzheng
  • qbzheng
  • 2016年03月11日 16:19
  • 83

最短排序数组(动态规划)

题目描述 对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 返回...
  • qq_36120793
  • qq_36120793
  • 2017年10月07日 22:01
  • 110
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最短排序
举报原因:
原因补充:

(最多只允许输入30个字)