BZOJ2456: mode

题解:

这题还是蛮有意思的,因为内存上限只有1m,所以不能开数组处理。我们发现题目中的众数是大于n/2的,所以我们可以只存一个量,每次读入不同则相互消去,最后剩下的一定是这个众数。
代码如下:

#include
#include
int n,x,y,sum;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&x);
        if(x==y) sum++; else if (!sum) y=x,sum=1; else sum--;
    }
    printf("%d",y);
    return 0;
}

你可能感兴趣的:(题解,BZOJ题解)