581. 最短无序连续子数组
给你一个整数数组 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. 最短无序连续子数组相关推荐
- LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)
581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...
- 【LeetCode】【HOT】581. 最短无序连续子数组
[LeetCode][HOT]581. 最短无序连续子数组 文章目录 [LeetCode][HOT]581. 最短无序连续子数组 package hot;public class Solution58 ...
- 581. 最短无序连续子数组 golang
581. 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: ...
- Leetcode 581.最短无序连续子数组
最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...
- 【LeetCode笔记】581. 最短无序连续子数组(Java、数组)
文章目录 题目描述 思路 && 代码 1. 排序法 O(nlogn).O(n) 2. 记录 max[ ].min[ ] 的写法 O(n).O(n) 3. 记录 max.min 的写法 ...
- 最短无序连续子数组—leetcode581
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, 6, 4, 8, 1 ...
- LeetCode 581. 最短无序连续子数组 (unfinished 排序+双指针)
581. 最短无序连续子数组 class Solution {public:int findUnsortedSubarray(vector<int>& nums) {vector& ...
- leetcode 581. 最短无序连续子数组(详解普通 / 进阶 / 单调栈解法,Java版)
题目 题解 方法1(暴力排序):时间复杂度O(nlogn),空间复杂度O(n) 一个简单的想法是:将数组 nums 进行排序,记为 nums_sorted .然后比较 nums 和 nums_sort ...
- LeetCode 581. 最短无序连续子数组(排序单调栈)
文章目录 1. 题目 2. 解题 2.1 排序 2.2 4次遍历 2.3 单调栈 1. 题目 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. ...
最新文章
- 【牛客每日一题】4.15 Treepath 题解(树上dfs/树形DP)
- Spring 注解之@RestController与@Controller的区别
- WebGoat系列实验Cross-Site Scripting (XSS)
- 【软件工程】数据流图初探
- 《信息学奥赛一本通》 高精度乘法。输入两个正整数,求它们的积。
- 成为奥运冠军需要天赋和努力
- 产品经理教你玩转阿里云负载均衡SLB系列(一):快速入门--什么是负载均衡
- flash player for linux 64,64-bit linux下装什么adobe flash player
- nginx nodejs环境配置_在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目...
- 管理学生信息android,Android 学生信息管理系统-Go语言中文社区
- win11WiFi驱动如何下载 windows11WiFi驱动下载的步骤方法
- JRE 和 JDK历史版本是为了帮助开发
- seata 集群_阿里巴巴和蚂蚁金服联手搞事情: Seata 我们走~
- JQuery Show()的几种效果 总有一种是你需要的
- 搭建Ubuntu下c/c++编译环境
- Python实现分卷压缩
- python 中文姓名库_中文人名语料库。中文姓名,姓氏,名字,称呼,日本人名,翻译人名,英文人名。...
- 配置webpack不打包第三方包
- TensorFlow北大公开课学习笔记-8 复现vgg16并实现图片识别
- html5绘制图形幸运大转盘,微信小程序利用canvas 绘制幸运大转盘功能