[BZOJ2456]mode

题意:求一个数列出现次数>=1/2的数。空间:1M。
显然不能存数字,但是因为这个众数的定义和平常的不一样,所以就非常可做了。
用别的数顶掉之前的数,YY一下发现最后留下的就是出现次数>=1/2的了。

#include <cstdio>
int i,n,cnt,ans;
int main() {
    scanf("%d",&n);
    while(n--) {
        scanf("%d",&i);
        if(cnt==0) ans=i;
        if(i==ans) cnt++;else cnt--;
    }
    printf("%d",ans);
}

猜你喜欢

转载自www.cnblogs.com/sdfzhsz/p/9496564.html