public:
//双指针 观察元素是否需要参与排序
//从左侧开始寻找存在逆序对的最远数字即为右边界,因为该数字肯定需要参与排序
//从右侧开始寻找存在顺序对的最远数字即为左边界
vector<int> subSort(vector<int>& array) {
int max=INT_MIN;
int min=INT_MAX;
vector<int> res;
int last=-1,first=-1;
int len=array.size();
if(len==0||len==1) {
res.push_back(first);
res.push_back(last);
return res;
}
//找右侧//和左侧最大值相等的位置不能算,因此有判断条件有等号
for(int i=0;i<len;++i){
if(array[i]>=max) max=array[i];
else last=i;
}
//找左侧
for(int i=len-1;i>=0;--i){
if(array[i]<=min) min=array[i];
else first=i;
}
res.push_back(first);
res.push_back(last);
return res;
}
};