题目: 给出一行数字 找出一个子序列,使序列的端点不能是该序列的最大值/最小值
思路:(1)要判断的是子序列的端点值的问题,所以需要从两端向中间找
(2)长度n个,并且不重复 直接判断当前的端点是不是最大最/最小值
#include<bits/stdc++.h>
using namespace std;
//朵拉
int a[200010];
int main()
{
int t;
cin >> t;
while(t--){
int n,s=1;
cin >> n;
for(int i=1;i<=n;i++) cin >> a[i];
int l=1,r=n,min=1,max=n;
while(l<r){
if(a[l]==min) l++,min++;
else if(a[l]==max) l++,max--;
else if(a[r]==min) r--,min++;
else if(a[r]==max) r--,max--;
else{
s=0;
cout << l << " "<< r << endl;break;
}
} if(s)cout << "-1"<< endl;
}
}