数据结构与算法题目集(中文)7-14 电话聊天狂人 (25分)

1.题目

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式:

输入首先给出正整数N(≤10​5​​),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。

输出格式:

在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3

2.题目分析:

 使用map来存放号码并且查找相同号码出现的次数

3.代码

#include<iostream>
#include<map>
using namespace std;
int main()
{
	int count;
	cin >> count;
	int max = -9999;
	map<long long ,int>list;
	for (int i = 0; i < 2*count; i++)
	{
			long long temp;
			cin >> temp;
			if (!list.count(temp))
			{
				list[temp] = 0;
			}
			list[temp]++;
			if (list[temp] > max)
			{
				max = list[temp];
			}
	}
	map<long long, int>::iterator run;
	long long answer;
	int amount = 0;
	for (run = list.begin(); run != list.end(); run++)
	{
		if ((*run).second == max)
		{
			amount++;

			if (amount == 1)
				answer = (*run).first;
		}
	}
	cout << answer << " " << max;
	if (amount > 1)cout << " " << amount;



}

 

posted @ 2020-02-07 20:29  Jason66661010  阅读(187)  评论(0编辑  收藏  举报