HDU 1029

主元素算法,线性复杂度,比较机智的思路,简单说就是维持计数,相同的就+,相异就-,计数为0记录新的数

#include <iostream>
#include <algorithm>
#include <queue>
#include <string>
#include <vector>
#include <stack>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;

const int maxn= 1e6+5;
int n, x;

int main()
{
	while (EOF!= scanf("%d", &n)){
		int a= -1, c= 0;
		for (int i= 0; i< n; ++i){
			scanf("%d", &x);
			if (0== c){
				a= x;
				++c;
			}
			else if (x== a){
				++c;
			}
			else{
				--c;
			}
		}

		printf("%d\n", a);
	}

	return 0;
}
posted @ 2021-04-03 20:01  IdiotNe  阅读(29)  评论(0编辑  收藏  举报