题目大意
找到出现次数达到 ( n + 1 ) / 2 (n+1)/2 (n+1)/2次的数,且保证有解, n n n为奇数
详细思路
因为 n n n为奇数,所以能出现次数达到 ( n + 1 ) / 2 (n+1)/2 (n+1)/2次的数只有一个
可以通过把两个不同数消掉,最后剩下的若干个相同的数就是题目所需结果
具体实现
#include<cstdio>
int n,x,y,z;
int main(){
while(scanf("%d",&n)!=EOF){
y=0;
for(int i=1;i<=n;i++){
scanf("%d",&z);
if(y==0){x=z;y=1;}
else if(x==z)y++;
else y--;
}
printf("%d\n",x);
}
}