pta——电话聊天狂人(c二叉树实现)
来源:互联网 发布:数据管控流程 编辑:程序博客网 时间:2024/05/17 00:59
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。
输入格式:
输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。
输出格式:
在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。
输入样例:
4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
输出样例:
13588625832 3
思路:二叉树实现足已,hash可能更快不过用的不熟这里没用。
代码:
#include <stdio.h>#include <stdlib.h>typedef long long ll;typedef struct Node* node;struct Node { ll pNumber; ll number; node Left; node Right;};node nodeCreate(ll phoneNumber){ node p = (node)malloc(sizeof(struct Node)); p->number = 1; p->pNumber = phoneNumber; p->Left = NULL; p->Right = NULL; return p;}node Search(node root,ll phoneNumber){ if(root == NULL)return root; node r = root; while(root){ if(root->pNumber > phoneNumber){ r = root; root = root->Left; } else if(root->pNumber < phoneNumber){ r = root; root = root->Right; } else if(root->pNumber == phoneNumber)return root; } return r;}node Make(node root,ll phoneNumber){ if(root == NULL){ root = nodeCreate(phoneNumber); } else{ node p = Search(root,phoneNumber); if(p->pNumber == phoneNumber)p->number++; else { if(p->pNumber>phoneNumber)p->Left = nodeCreate(phoneNumber); else p->Right = nodeCreate(phoneNumber); } } return root;}ll maxx,sum,mNumber;void findResult(node root){ if(root == NULL)return ; if(root->number<maxx); else if(root->number == maxx){ sum++; if(root->pNumber<mNumber)mNumber = root->pNumber; } else if(root->number>maxx){ sum = 1; maxx = root->number; mNumber = root->pNumber; } findResult(root->Left); findResult(root->Right);}int main(){ node root = NULL; int N; scanf("%d",&N); while(N--){ ll a,b; scanf("%lld %lld",&a,&b); root = Make(root,a); root = Make(root,b); } findResult(root); printf("%lld %lld",mNumber,maxx); if(sum>1)printf(" %lld",sum); return 0;}
阅读全文
0 0
- pta——电话聊天狂人(c二叉树实现)
- PTA-电话聊天狂人(分离链接法)
- 5-14 电话聊天狂人 (25分)/PTA
- 电话聊天狂人(25 分)
- PAT 电话聊天狂人
- PAT电话聊天狂人 哈希表实现查找与插入 C语言实现
- 5-14 电话聊天狂人
- 5-14 电话聊天狂人
- 7-20 电话聊天狂人(25 分) (哈希)
- 电话聊天狂人(25 分)(散列函数)
- 11-散列1 电话聊天狂人(25 分)
- [DS][Hash][PAT][电话聊天狂人]
- 11-散列1 电话聊天狂人
- 5-20 电话聊天狂人 (25分)
- 11-散列1 电话聊天狂人
- 5-14 电话聊天狂人 (25分)
- 5-14 电话聊天狂人 (25分)
- pta ——还原二叉树
- 面向对象-类和对象的创建
- JAVA | 28
- VMware虚拟机模拟Ubuntu无法上网的解决办法
- Toolbar详解(二)
- Docker
- pta——电话聊天狂人(c二叉树实现)
- leetcode 692. Top K Frequent Words
- hadoop mapreduce的本地模式及yarn模式
- Matlab基本操作
- 退火算法?
- 【Scikit-Learn 中文文档】最近邻
- 在Linux服务器和本地主机查看服务器端口信息,检测端口是否可连接
- 掌柜大作战(22):京东商城系统之间的通信和合作,技术探讨
- method_SGD(Stochastic Gradient Descent)