1773: Mode
Description
give you a number of n series, in which a number of more than n / 2 times , you should find out that the number (n<=500000,x<=10^19)
Input
The first line is a positive integer n. The second line of n positive integers separated by spaces.
Output
A Positive integer on a line indicates that number
Sample Input
5 3 2 3 1 3
Sample Output
3
解题思路:这题第一想到就是用map做,但是数据用点大,我就用string来输入数据,但是自己在这里犯了个错误,就是map没有clear(),导致答案错误,这不应该。
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
int main(void)
{
int n;
while(~scanf("%d",&n))
{
getchar();
mp.clear();
int t=n/2;
string s,ans="-1";
for(int i=0;i<n;i++)
{
cin>>s;
mp[s]++;
if(mp[s]>t)
ans=s;
}
if(ans!="-1")
cout<<ans<<endl;
}
return 0;
}