1
class Solution {
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;
6
}
7
// Base case for a non-decreasing sequence
8
if (firstLast == arr.length - 1) return 0;
9
for (; lastFirst > 0; lastFirst--) {
10
if (arr[lastFirst] < arr[lastFirst - 1]) break;
11
}
12
// Possibilities 1 or 2 as mentioned above
13
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);
18
break;
19
}
20
}
21
return minLength;
22
}
23
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0