EzLink
Senior Member
submit fail 5 phát 

C#:
public class Solution
{
public int FindLengthOfShortestSubarray(int[] arr)
{
var len = arr.Length;
var l = -1;
var r = -1;
for (int i = 0; i < len - 1; i++)
{
if (arr[i] > arr[i + 1])
{
l = i;
break;
}
}
for (int i = len - 1; i > 0; i--)
{
if (arr[i - 1] > arr[i])
{
r = i;
break;
}
}
var res = len;
if (l >= r) return 0;
if (arr[l] > arr[r])
{
int i = 0, j = r;
while (i <= l)
{
if (j < len && arr[i] > arr[j])
{
j++;
}
else
{
res = Math.Min(res, j - i - 1);
i++;
}
}
i = 0;
j = r;
while (j < len)
{
if (i <= l && arr[i] <= arr[j])
{
i++;
}
else
{
res = Math.Min(res, j - i);
j++;
}
}
}
else
{
res = r - l - 1;
}
return res;
}
}
phải áp dụng hơi nhiều skill mới ra

có khi nhanh bằng merge sort .


