581. 最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。
你找到的子数组应是最短的,请输出它的长度。
示例 1:
输入: [2, 6, 4, 8, 10, 9, 15]
输出: 5
解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。
题解
/**
* @param {number[]} nums
* @return {number}
*/
var findUnsortedSubarray = function(nums) {
let a = []
let arr = [...nums].sort((a, b) => a - b)
for (let i = 0; i < nums.length; i++) {
if (nums[i] != arr[i]) {
a.push(i)
break
}
}
for (let i = 0; i < nums.length; i++) {
if (nums[nums.length - 1 - i] != arr[nums.length - 1 - i]) {
a.push(nums.length - 1 - i)
break
}
}
if (a.length == 0) {
return 0
}
return a[1] - a[0] + 1
};