1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution { public int findUnsortedSubarray(int[] nums) {
int[] sortedNums = nums.clone(); Arrays.sort(sortedNums);
int i = 0, j = nums.length - 1; while (i <= j && nums[i] == sortedNums[i]) { i++; } while (i <= j && nums[j] == sortedNums[j]) { j--; }
return j - i + 1; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { public int findUnsortedSubarray(int[] nums) {
int left = 0, right = -1; int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
for (int i = 0; i < nums.length; i++) { if (nums[i] < max) { right = i; } else { max = nums[i]; } if (nums[nums.length - 1 - i] > min) { left = nums.length - 1 - i; } else { min = nums[nums.length - 1 - i]; } }
return right - left + 1; } }
|
Reference
581. Shortest Unsorted Continuous Subarray