蒜頭君來蒜場面試的時候,曾經遇到這樣一個面試題:
給定n個整數,求裏面出現次數最多的數,如果有多個重複出現的數,求值最大的一個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。
輸入格式
第一行輸入一個整數n(1<=n<=100000),接下來一行輸入n各int範圍內的整數。
輸出格式
輸出出現次數最多的數和出現的次數,中間用一個空格隔開,如果有多個重複出現的數,輸入值最大的那個。
樣例輸入1
5
1 1 2 3 4
樣例輸出1
1 2
樣例輸入2
10
9 10 27 4 9 10 3 1 2 6
樣例輸出2
10 2
分析:可以直接用map來解決,因爲map帶有排序和不重複的特性
#include<iostream>
#include<map>
using namespace std;
map<int,int>s;
int main()
{
int n,t,max=0,le=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>t;
s[t]++;
}
map<int,int>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
if((it->second)>=max)
{
max=(it->second);
le=(it->first);
}
}
cout<<le<<" "<<s[le]<<endl;
return 0;
}