# 1574. Shortest Subarray to be Removed to Make Array Sorted ###### tags: `Leetcode` `Medium` Link: https://leetcode.com/problems/shortest-subarray-to-be-removed-to-make-array-sorted/ ## 思路 分三种情况讨论 从左边开始删 从右边开始删 以及删中间的 先考虑前两种情况 要嘛留left和它左边的 要嘛留right和它右边的 ```arr[0:left]```和```arr[right:-1]```都是递增序列 考虑第三种情况的时候其实就是在这两个subarray里面找两个点使得```arr[i]<=arr[j]``` 删掉```arr[i+1:j-1]```就能保证剩下的array是non-decreasing ## Code ```java= class Solution { public int findLengthOfShortestSubarray(int[] arr) { int n = arr.length; int left = 0, right = n-1; while(left+1<n && arr[left]<=arr[left+1]){ left++; } if(left==n-1) return 0; while(right>left && arr[right-1]<=arr[right]){ right--; } int ans = Math.min(right, n-left-1); int i = 0; int j = right; while(i<=left && j<n){ if(arr[i]<=arr[j]){ ans = Math.min(ans, j-i-1); i++; } else{ j++; } } return ans; } } ```