yyy loves Maths VI (mode)

如果空间正常的话,可以排序,然后找n/2的位置的数

但是...

摩尔投票法,线性的时间复杂度,常量级的空间复杂度,找到数组中出现次数大于一般的数

就是每次找到两个不同的元素消去,直到剩下的都是同一种元素

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 int n,x,h,cnt;
 8 int main(){
 9   cin>>n;
10   for(int i=1;i<=n;i++){
11     cin>>x;
12     if(x==h) cnt++;
13     if(!cnt) h=x,cnt=1;
14     if(x!=h) cnt--;
15   }
16   cout<<h<<endl;
17 }

 

posted @ 2018-11-04 18:15  lcan  阅读(130)  评论(0编辑  收藏  举报