题意:找出n个数内出现次数大于n/2的数,并且输出。
分析:如果前m个数内,一个数出现了m/2次,那么删掉这m个数不会对结果造成影响。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int a[1000000]; int main() { int n; while(~scanf("%d",&n)) { for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } int num,sum=0; for(int i=1; i<=n; i++) { if(sum==0) { num=a[i]; sum=1; } else { if(num==a[i]) sum++; else sum--; } } printf("%d ",num); } return 0; }