题解
2024-04-01 13:21:30
发布于:广东
27阅读
0回复
0点赞
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct node{
int val, idx;
}a[100005];
bool cmp(node a, node b){
if(a.val == b.val) return a.idx > b.idx;
return a.val < b.val;
}
int main(){
int n;
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i].val;
a[i].idx = i;
}sort(a + 1, a + n + 1, cmp);//排序,使第一个值最小且原来的idx最大,最后一个值反之,这样就能交换次数最小
int ct = a[n].idx + n - a[1].idx - 1;
if(a[n].idx > a[1].idx) ct--;//如果最大值会和最小值交换,就次数减一
cout << ct;
return 0;
}
时间复杂度:
全部评论 1
WA12 AC0
2024-04-17 来自 浙江
0谁说我写的是这道题的题解(
2024-04-18 来自 广东
0你猜猜题解是哪一天发的(
2024-04-18 来自 广东
02024-04-01 13:21:30
2024-04-18 来自 浙江
0
有帮助,赞一个