SWUST OJ 1270 AR的众数

Description

给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数。

Input

第1行一个正整数n。
第2行n个正整数用空格隔开。

Output

一行一个正整数表示那个众数。

Sample Input

5

3 2 3 1 3

Sample Output

3

分析

众数抵消的思想

AC代码

/*
题目给出
众数的个数大于n / 2 
利用众数的个数必定大于其他数的个数总和来抵消 
*/ 

#include <cstdio>
using namespace std;
int i,n,a,cnt=0,y=0;
int main(){
    scanf("%d",&n);
    for (i=1;i<=n;i++)
 {
        scanf("%d",&a);
        if (y!=a)
  {
            if (cnt==0) {cnt=1,y=a;}
            else cnt--;
        }
        else cnt++;
    }
    printf("%d",y);
    return 0;
}
发布了52 篇原创文章 · 获赞 22 · 访问量 1731

猜你喜欢

转载自blog.csdn.net/qq_45792080/article/details/104559804