[luogu 2397] yyy loves Maths VI (mode) {众数}

版权声明:请大家斧正,如喜欢的话,为拙见点一个赞吧。 https://blog.csdn.net/qq_39897867/article/details/84675869

题目

https://www.luogu.org/problemnew/show/P2397


解题思路

因为这道题的空间很大。所以什么诸如 m a p , h a s h map,hash 之类的都不太管用。但是因为本题有一个特殊条件:众数的数量一定是一半的。
所以我们可以维持一个当前的众数,然后对新进来的这个数,判断一下是否相同,如果相同,则记录众数数量的 s u m sum 累加,否则逐减,当 s u m = 0 sum=0 时将新读入的这个数当成 众数 来处理


代码模拟

#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);
}

猜你喜欢

转载自blog.csdn.net/qq_39897867/article/details/84675869