/* 思路:将最小值排到最左侧,然后以最小值为n,进行一次排序 或 将最大值排到最右侧,然后以最大值为n,进行一次排序 情况一:排序一次: 最小值在最左侧,以最小值为n 情况二:排序两次 1)最小值在最右侧,最大值不再最左侧,{x,3,max,1,4,min} -以最左侧为n(x,min,1,2,3,4,max) -以最右侧为n(min,1,2,x,3,4,max) 2)最小值在中间{1,2,4,min,4,x} -以最右侧为n(min,1,2,3,4,x) -以最左侧为n(min,1,2,3,..max) 情况三:排序三次 最小值在最右侧,最大值在最左侧 (max,1,2,3,4,min) 以最左侧为n(max,min,1,2,3,4) 以最右侧为n(min,1,2,3,max,4) // 将min置换到最左侧。同理可以将max置换到最右侧 以最左侧为n(min,1,2,3,4,max) */ #include <iostream> #include <algorithm> using namespace std; int fun(int n, int arr[]) { int* getMax = max_element(arr, arr+n); int* getMin = min_element(arr, arr+n); int maxi = (getMax - arr); int mini = (getMin - arr); int res = 0; if(mini == 0) res = 1; else if(mini == n) { if(maxi == 0) res = 3; else maxi = 2; } else // 中间 { res = 2; } return res; } int main() { const int N = 1e5; int arr[N]; int n; cin >> n; for(int i = 0; i < n; i++) { cin >> arr[i]; } cout << fun(n, arr); return 0; }