添加链接描述
首先明确可以尽量选大的范围 那就考虑首尾是不是1或n 如果都不是且正好相反就是需要三次的交换,如果首尾有一个符合需要一次,否则两次就可
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+9;
typedef long long ll;
int arr[N];
ll sum=0;
int T,n;
int main(){
int T;
cin>>T;
while(T--){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&arr[i]);
}
int now=1,mx=0,ans=0;
if(is_sorted(arr+1,arr+1+n)){
ans=0;
}
else if(arr[1]==1||arr[n]==n)ans=1;
else if(arr[1]==n&&arr[n]==1)ans=3;
else ans=2;
cout<<ans<<endl;
}
return 0;
}