此题的“众数”出现次数一定是超过一半的。因此考虑用不同的两个数去互相抵消,最后剩下谁,那它就是答案。
代码很短(来自黄学长):
#include<cstdio>
int n,t,x,tot;
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%d",&x);
if(x==t)tot++;
else if(!tot) {t=x;tot=1;}
else tot--;
}
printf("%d",t);
return 0;
}