1157. 最短无序连续子数组

1157. 最短无序连续子数组

 
给定一个整数数组,你需要找到一个连续子数组,如果你只按升序对这个子数组进行排序,那么整个数组也将按升序排序。
你需要找到最短的这样的子数组并输出它的长度。

样例

输入: [2, 6, 4, 8, 10, 9, 15]
输出: 5
解释: 你需要对[6, 4, 8, 10, 9]按升序排列从而整个数组也变为升序。

注意事项

  1. 输入的数组长度范围为[1, 10,000]。
  2. 输入的数组可能会包含重复元素,本题升序的含义为<=。
 
 
 
 
public int findUnsortedSubarray(int[] nums) {
    // Write your code here
    int start = 0;
    int end = nums.length - 1;
    boolean finish = false;
    for (; start < nums.length; start++) {
        for (int j = start + 1; j < nums.length; j++) {
            if (nums[start] > nums[j]) {
                finish = true;
                break;
            }
        }
        if (finish) break;
    }
    finish = false;
    for (; start < end; end--) {
        for (int j = end - 1; j >= 0; j--) {
            if (nums[j] > nums[end]) {
                finish = true;
                break;
            }
        }
        if (finish) break;
    }
    return end - start + 1;
}
 

你可能感兴趣的:(算法,算法,java,1157.,最短无序连续子数组)