题目描述
题解
方法一(时间复杂度不好)
所求的子数组一定是以两个降序元素开始, 并以两个降序元素结尾的.
比如题目的实例中, 以6和4
作为所求数组的开始, 以10和9
作为所求数组的结尾.
1 | public int findUnsortedSubarray(int[] nums) { |
方法二:排序
先将数组排序, 然后逐一比对, 记下首个不同的元素和最后一个不同的元素
代码略
方法三:推荐
根据无序连续子数组的性质, 找出子数组中的最大值和最小值, 第一个大于该最小值的位置为子数组的左界, 从右边开始第一个小于最大值的位置为子数组的右界
1 | public class lc581 { |