对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度。
给定一个int数组A和数组的大小n,请返回一个二元组,代表所求序列的长度。(原序列位置从0开始标号,若原序列有序,返回0)。保证A中元素均为正整数。
class Subsequence {
public:
int shortestSubsequence(vector<int> A, int n) {
// write code here
int l=0;
int r=n-1;
int tmax=A[0];
int tmin=A[n-1];
int length=0;
for(int i=1;i<n;i++)
{
if(A[i]>=tmax)
{
tmax=A[i];
}
else
{
l=i;
}
}
for(int j=n-2;j>=0;j--)
{
if(A[j]<=tmin)
{
tmin=A[j];
}
else{
r=j;
}
}
return l-r>0?l-r+1:0;
}
};