YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

题目大意: n个数字,找出其中至少出现(n+1)/2次的数字,并且保证n是奇数.

题解:这道题数组是不能用的,因为题目没有明确输入的数据范围,比如输入了一个1e9,数组肯定开不了这么大。所以要用map来记录每个数字出现的次数,边输入边记录,然后找到满足题意的数即可。

code:

#include<bits/stdc++.h>
using namespace std;
map<int,int>mp;
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        mp.clear();
        int x,tmp=(n+1)/2,ans;
        for(int i=1;i<=n;i++){
            scanf("%d",&x);
            mp[x]++;
            if(mp[x]>=(n+1)/2) {
                ans=x;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

posted on 2020-04-17 14:20  Target--fly  阅读(91)  评论(0编辑  收藏  举报