给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

请你找出符合题意的 最短 子数组,并输出它的长度。

示例 1:

输入:nums = [2,6,4,8,10,9,15]
输出:5
解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。
示例 2:

输入:nums = [1,2,3,4]
输出:0
示例 3:

输入:nums = [1]
输出:0

解题思路

因为其中一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。

说明只有中间这个子数组是乱序的,前面一部分和后面一部分都是递增的。因此我们可以维护一个从左到右的最大值和一个从右到左的最小值,最大值在前面和后面的递增数组中,都是正常递增的,但是在中间的乱序数组中,大值就会出现在小值的左边,当出现这种情况时,就说明了当前元素是在乱序数组当中的,对于最小值也是同样的道理

代码

class Solution {public int findUnsortedSubarray(int[] nums) {int min=Integer.MAX_VALUE,max=Integer.MIN_VALUE;int n=nums.length;     int l=-1,r=-1;for (int i=0;i<n;i++){if (max>nums[i]){r=i;}else {max=nums[i];}if (min<nums[n-i-1]){l=n-i-1;}else {min=nums[n-i-1];}}return r==-1?0:r-l+1;}
}

581. 最短无序连续子数组相关推荐

  1. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  2. 【LeetCode】【HOT】581. 最短无序连续子数组

    [LeetCode][HOT]581. 最短无序连续子数组 文章目录 [LeetCode][HOT]581. 最短无序连续子数组 package hot;public class Solution58 ...

  3. 581. 最短无序连续子数组 golang

    581. 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: ...

  4. Leetcode 581.最短无序连续子数组

    最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...

  5. 【LeetCode笔记】581. 最短无序连续子数组(Java、数组)

    文章目录 题目描述 思路 && 代码 1. 排序法 O(nlogn).O(n) 2. 记录 max[ ].min[ ] 的写法 O(n).O(n) 3. 记录 max.min 的写法 ...

  6. 最短无序连续子数组—leetcode581

    给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, 6, 4, 8, 1 ...

  7. LeetCode 581. 最短无序连续子数组 (unfinished 排序+双指针)

    581. 最短无序连续子数组 class Solution {public:int findUnsortedSubarray(vector<int>& nums) {vector& ...

  8. leetcode 581. 最短无序连续子数组(详解普通 / 进阶 / 单调栈解法,Java版)

    题目 题解 方法1(暴力排序):时间复杂度O(nlogn),空间复杂度O(n) 一个简单的想法是:将数组 nums 进行排序,记为 nums_sorted .然后比较 nums 和 nums_sort ...

  9. LeetCode 581. 最短无序连续子数组(排序单调栈)

    文章目录 1. 题目 2. 解题 2.1 排序 2.2 4次遍历 2.3 单调栈 1. 题目 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. ...

最新文章

  1. 【牛客每日一题】4.15 Treepath 题解(树上dfs/树形DP)
  2. Spring 注解之@RestController与@Controller的区别
  3. WebGoat系列实验Cross-Site Scripting (XSS)
  4. 【软件工程】数据流图初探
  5. 《信息学奥赛一本通》 高精度乘法。输入两个正整数,求它们的积。
  6. 成为奥运冠军需要天赋和努力
  7. 产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
  8. flash player for linux 64,64-bit linux下装什么adobe flash player
  9. nginx nodejs环境配置_在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目...
  10. 管理学生信息android,Android 学生信息管理系统-Go语言中文社区
  11. win11WiFi驱动如何下载 windows11WiFi驱动下载的步骤方法
  12. JRE 和 JDK历史版本是为了帮助开发
  13. seata 集群_阿里巴巴和蚂蚁金服联手搞事情: Seata 我们走~
  14. JQuery Show()的几种效果 总有一种是你需要的
  15. 搭建Ubuntu下c/c++编译环境
  16. Python实现分卷压缩
  17. python 中文姓名库_中文人名语料库。中文姓名,姓氏,名字,称呼,日本人名,翻译人名,英文人名。...
  18. 配置webpack不打包第三方包
  19. TensorFlow北大公开课学习笔记-8 复现vgg16并实现图片识别
  20. html5绘制图形幸运大转盘,微信小程序利用canvas 绘制幸运大转盘功能

热门文章

  1. 【信号】函数kill、raise、abort、alarm
  2. Java未来路在何方?挑战大厂重燃激情!
  3. CSS3--5.颜色属性
  4. 翻译(九)——Clustered Indexes: Stairway to SQL Server Indexes Level 3
  5. 浅谈传统企业网络运营那些事儿
  6. 自定义Toast 很简单就可以达到一些对话框的效果 使用起来很方便
  7. python会什么比c慢
  8. hdu区域赛在线热身赛 暨 第十二场组队赛
  9. 2011考研数学概率论基础复习必备知识点
  10. Sentinel在订单大量服务调用的应用场景