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;
    }
}

 

posted on 2017-09-20 15:30  keepshuatishuati  阅读(128)  评论(0编辑  收藏  举报