数据结构实验:哈希表
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。
输入
单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000
接下来有n个数字,每个数字不超过100000000
输出
出现次数最多的数字和次数。
示例输入
3 1 1 2
示例输出
1 2
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 100010
using namespace std;
struct node///申请一个链表的节点
{
int d;
node *next;
}*q[N];
int a[N];
void bu(int x)
{
int y=x%N;
node *p;
p=new node ;//如果不开新内存会崩
p->d=x;///不是把y复过来
p->next=NULL;
p->next=q[y];将当前的节点指向q[y],并将当前值付给它
q[y]=p;
}
int fi(int x)
{
int s=0;
int y=x%N;
for(node *p=q[y];p;p=p->next)
{
if(p->d==x)
s++;
}
return s;
}
int main()
{
int n,m,i,j,k;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
bu(a[i] );
}
int z=0,vis=0;
for(i=0;i<n;i++)
{
if(z<fi(a[i]))
{
z=fi(a[i]);
vis=a[i];
}
}
cout<<vis<<" "<<z<<endl;
return 0;
}
//
//3
//1 2 1