题目大意: 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 ",ans); } return 0; }