待排序的最短子数组

题目

对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。
给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。

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

思路

从左开始遍历数组,记录下已经遍历部分的最大值max,如果遍历的数值小于max时,记录这种情况下最右的位置right。

从左开始遍历数组,记录下已经遍历部分的最大值min,如果遍历的数值大于min时,记录这种情况下最右的位置left。

import java.util.*;

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

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,906评论 0 4
  • 该文章总结自牛课网的在线算法课程(https://www.nowcoder.com/) 经典排序算法就是前面讲那几...
    锅与盆阅读 12,300评论 6 14
  • 文/绿骏马 当一位美国人用太极拳打败中国拳手的时候,你会做何感想?不可思意,痛心疾首,还是跃跃欲试,想一试身手。 ...
    绿骏马sja阅读 4,525评论 0 1
  • 学习,工作,爱情……生活无非这几种烦恼和话题。 大概爱情就是临睡关灯前的四目相对,世界很安静,那一刻,对方就是全世...
    这一只果是大小姐阅读 2,444评论 0 0
  • 《礼物》 作者:切斯瓦夫·米沃什(波兰) 如此幸福的一天 雾一早就散了, 我在花园里干活。 蜂鸟停在忍冬花上。 这...
    静梦辰光阅读 2,790评论 0 1

友情链接更多精彩内容