classSolution { publicintfindUnsortedSubarray(int[] nums) { int[] arr = nums.clone(); Arrays.sort(arr); intleft=0, right = nums.length - 1; while (left <= right && nums[left] == arr[left]) ++left; while (left <= right && nums[right] == arr[right]) --right; return right - left + 1; } }
时间复杂度:
空间复杂度:
方法二:一次遍历
java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution { publicintfindUnsortedSubarray(int[] nums) { intn= nums.length; intmin= nums[n - 1], max = nums[0]; intleft= -1, right = -1; for (inti=0; i < n; i++) { if (nums[i] < max) right = i; else max = nums[i]; if (nums[n - i - 1] > min) left = n - i - 1; else min = nums[n - i - 1]; } return right == -1 ? 0 : right - left + 1; } }