版权声明:请大家斧正,如喜欢的话,为拙见点一个赞吧。 https://blog.csdn.net/qq_39897867/article/details/84675869
题目
https://www.luogu.org/problemnew/show/P2397
解题思路
因为这道题的空间很大。所以什么诸如
之类的都不太管用。但是因为本题有一个特殊条件:众数的数量一定是一半的。
所以我们可以维持一个当前的众数,然后对新进来的这个数,判断一下是否相同,如果相同,则记录众数数量的
累加,否则逐减,当
时将新读入的这个数当成
来处理
代码模拟
#include<cstdio>
using namespace std;
int n,ans,d,sum;
int main()
{
scanf("%d",&n);
while (n--){
scanf("%d",&d);
if (!sum) ans=d,sum++; else d==ans?sum++:sum--;
}
printf("%d",ans);
}