2
public int findLengthOfShortestSubarray(int[] arr) {3
int firstLast = 0, lastFirst = arr.length - 1;4
for (; firstLast < arr.length - 1; firstLast++) {5
if (arr[firstLast] > arr[firstLast + 1]) break;7
// Base case for a non-decreasing sequence8
if (firstLast == arr.length - 1) return 0;9
for (; lastFirst > 0; lastFirst--) {10
if (arr[lastFirst] < arr[lastFirst - 1]) break;12
// Possibilities 1 or 2 as mentioned above13
int minLength = Math.min(arr.length - firstLast - 1, lastFirst);14
for (; firstLast >= 0; firstLast--) {15
for (int i = lastFirst; i < arr.length; i++) {16
if (arr[firstLast] > arr[i]) continue;17
minLength = Math.min(minLength, i - firstLast - 1);