(\)
(Description)
一个长度为(N)的数列,求其众数。
- (Nin [1,5 imes 10^5]),数字大小(le maxlongint),空间限制(1MB)
(\)
(Solution)
我是智障您们都太神了
-
空间大点离散化或者(map)就水过去了
-
注意到众数出现次数(> frac{N}{2}),于是神仙做法是令不同的数字互相抵消,那么最后剩下的数一定是众数,按顺序读进来开个计数器就行了。
涨姿势原来调用像iostram的一些头文件还需要空间
(\)
(Code)
#include<cstdio>
using namespace std;
int main(){
int n,m,now,cnt;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
(m==now)?++cnt:--cnt;
if(cnt<=0) cnt=1,now=m;
}
printf("%d
",now);
return 0;
}