Note:
end should apply end of left to right order using i index
start is right to left using length - i - 1 index.
Set end to be -2 since result is end - start + 1. If nothing found should return 0. So if start is -1, end should be -2.
class Solution { public int findUnsortedSubarray(int[] nums) { if (nums.length < 2) { return 0; } int max = nums[0], min = nums[nums.length - 1], start = -1, end = -2; for (int i = 1; i < nums.length; i++) { max = Math.max(nums[i], max); min = Math.min(nums[nums.length - i - 1], min); if (nums[i] < max) end = i; if (nums[nums.length - i - 1] > min) start = nums.length - i - 1; } return end - start + 1; }}