2_19最短子数组

对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。

给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。

测试样例:
输入:[1,4,6,5,9,10],6
返回:2

class Subsequence {
public:
    int shortestSubsequence(vector<int> A, int n) {
        // write code here
       int max = A[0], r_idx = -1;
       int min = A[n-1], l_idx = -1;
       for(int i=1; i<n; i++){
           if(A[i] < max){
               r_idx = i;
           }else if(A[i] > max){
               max = A[i];
           }
       }
       for(int i=n-1; i>=0; i--){
           if(A[i] > min){
               l_idx = i;
           }else if(A[i] < min){
               min = A[i];
           }
       }
       return r_idx == l_idx ? 0 : r_idx - l_idx + 1;
       // 用三元运算符可以省略下面语句,比较简洁
       //if (r_idx == l_idx){
           //return 0;
       //}else{
          //return r_idx - l_idx + 1;
       //}
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容