AcWing 5524. 多数意见
原题链接
简单
作者:
懒惰的蚩蚩
,
2024-11-01 20:06:06
,
所有人可见
,
阅读 8
set集合的简单使用
主要思路:
假如当前n > 2 ,就判断这一行中的连续的3个数字中,是否有2个是相同的,如果有,就说明这个数字是可以吃的草。将其加入到集合中。
假如当前n == 2(因为n最小就是2),此时,只需要判断这两个数字是否相等,相等就是草,不相等就没有草。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 15;
int t, n;
int a[N];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
while(t--) {
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
set<int> cao;
if(n > 2) {
for(int i = 1; i <= n - 2; i++) {
if(a[i] == a[i + 1] || a[i] == a[i + 2]) cao.insert(a[i]);
else if(a[i + 1] == a[i + 2]) cao.insert(a[i + 1]);
}
}else {
//这个时候n一定是2
if(a[1] == a[2]) cao.insert(a[1]);
}
if(cao.empty()) {
cout << "-1" << endl;
}else {
for(auto c : cao) {
cout << c << " ";
}
cout << endl;
}
}
return 0;
}