1029

来源:互联网 发布:淘宝无线端新品上架 编辑:程序博客网 时间:2024/05/21 19:34

stl水过

值得一提的是这道题规定大于等于一般,所以有种更好的方法,就是加减,结果的值一定大于等于0;

#include <iostream>
#include <map>
using namespace std;

int main(){
    map<int ,int> hash;
    int n,tmp;
    while(~scanf("%d",&n)){
        hash.clear();
        for(int i=0; i<n; ++i){
            scanf("%d",&tmp);
            ++hash[tmp];
        }
        map<int,int>::iterator it;
        for(it=hash.begin(); it!=hash.end(); ++it){
            if(it->second>=(n+1)/2){
                cout<<it->first<<endl;
                break;
            }
        }

    }
}

好方法:

#include<iostream>


int main()
{
    int i,n,num,currnum,ans;
   
    while(scanf("%d",&n)!=EOF)
    {
        scanf("%d",&num);
        currnum = num;
        ans = 1;
        for(i = 1 ; i < n; i ++)
        {
            scanf("%d",&num);
            if(ans == 0)
                currnum = num,ans ++;
            else if(num != currnum)
            {
                ans --;
            }
            else if (num == currnum)
                ans ++;
        }
        printf("%d/n",currnum);
    }
    return 0;
}

原创粉丝点击