abc398c
不是很难,要掌握mp和vector的转换排序,比较常用,不要写错了
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>
using namespace std;
const int N = 3e5 + 10;
int n;
int a[N];
unordered_map<int, int> mp; // 存储每个数的最后出现下标
unordered_map<int, int> cnt; // 存储每个数的出现次数
// 自定义比较函数
bool compare(const pair<int, int>& p1, const pair<int, int>& p2) {
if (cnt[p1.first] != cnt[p2.first]) {
return cnt[p1.first] < cnt[p2.first];
}
return p1.first > p2.first;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
mp[a[i]] = i;
cnt[a[i]]++;
}
vector<pair<int, int>> vec(mp.begin(), mp.end());
// 对 vector 进行排序
sort(vec.begin(), vec.end(), compare);
if(cnt[vec[0].first] == 1)
cout << vec[0].second << endl;
else cout << -1 << endl;
return 0;
}

浙公网安备 33010602011771号