#include <iostream>

using namespace std;


const int N=1000005;
int n;
int a[N];
int main()
{
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];

    }
    int mn=10e9+1,mx=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]>mx)
            mx=a[i];
        if(a[i]<mn)
            mn=a[i];
    }
    if(a[0]==mx&&a[n-1]==mn)
    {
        cout<<3<<endl;
    }
    else if( a[0]==mn)
    {
        cout<<1<<endl;
    }else if( a[n-1]==mx)
    cout<<1;
    else cout<<2;


    return 0;
}

思路:(找规律)

目标是找出所有排序次数的可能性。从题目中分析可以得到。一共有三种输出可能,分别是1 、2、 3。输出1的有两种情况,包括最小值已经在最左边或者是最大值已经在最右边。输出3的有一种情况,就是当最大值在左边,且最小值在最右边。其余的情况都是输出2的情况。因此按照这个模拟就能输出答案。