题解 | #小Q的排序#
小Q的排序
http://www.nowcoder.com/practice/62a677c595fb471e832e4ed4107d3c63
#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的情况。因此按照这个模拟就能输出答案。