0581._Shortest_Unsorted_Continuous_Subarray
581. 最短无序连续子数组
难度: Easy
刷题内容
原题连接
内容描述
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。
你找到的子数组应是最短的,请输出它的长度。
示例1:
输入: [2, 6, 4, 8, 10, 9, 15]
输出: 5
解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。
说明 :
- 输入的数组长度范围在 [1, 10,000]。
- 输入的数组可能包含重复元素 ,所以升序的意思是<=。
解题方案
思路 1
**- 时间复杂度: O(1)**- 空间复杂度: O(N)**
省空间的算法,但是耗时间
每次循环,如果当前数组的第一位是最小值,则将其“弹出”;如果最后一位是最大值,则也将其“弹出”;如果以上两种情况都没有,则说明剩下的数组是最短无序连续子数组
代码:
1 | /** |
思路 2
**- 时间复杂度: O(1)**- 空间复杂度: O(2N)**
省时间的算法,但是耗空间
与上面方法比较,不用每次都计算最大值和最小值
1 | var findUnsortedSubarray = function(nums) { |