首页 > 代码库 > Openjudge 1.13-28:出现次数超过一半的数

Openjudge 1.13-28:出现次数超过一半的数

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

给出一个含有n(0 < n <= 1000)个整数的数组,请找出其中出现次数超过一半的数。

数组中的数大于-50且小于50。

输入
第一行包含一个整数n,表示数组大小;
第二行包含n个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。
输出
如果存在这样的数,输出这个数;否则输出no。
样例输入
3
1 2 2
样例输出
2
还是一道水题,特水。。发出来就是证明我还活着。。
技术分享
#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

bool v[50001],vi[50001];
int cs[50001],scs[50001];
int a,n,i,j,maxn;
int main()
{
    cin>>n;
    for(i=0;i<n;++i)
    {
        cin>>a;
        cs[a+50]++;
    }
    int h=0;
    for(i=0;i<=100;++i)
    {
        if(cs[i]*2>n)
        {
            cout<<i-50<<" ";
            h++;
            return 0;
        }
    }
    if(!h)
    cout<<"no";
}
View Code

 

 

Openjudge 1.13-28:出现次数超过一半的数