Python实现全自动电子邮箱:按发件频率优先处理邮件
以下是实现该全自动电子邮箱功能的 Python 代码: ```python # 初始化一个字典来存储每个发件人的未读邮件列表 sender_emails = {} # 初始化一个列表来存储所有未读邮件 all_emails = [] # 读取输入的操作次数 n = int(input()) for _ in range(n): # 读取每一行输入 line = input().split() if line[0] == '+': # 如果是接收新邮件的操作 sender = int(line[1]) email_id = int(line[2]) # 如果发件人不在字典中,初始化一个空列表 if sender not in sender_emails: sender_emails[sender] = [] # 将邮件编号添加到发件人的未读邮件列表中 sender_emails[sender].append(email_id) # 将邮件编号添加到所有未读邮件列表中 all_emails.append(email_id) else: # 如果是查看优先度最高的邮件的操作 if not all_emails: # 如果邮箱为空,输出 -1 print(-1) else: # 找到发件人出现次数最多的发件人 max_count = 0 max_sender = None for sender, emails in sender_emails.items(): if len(emails) > max_count: max_count = len(emails) max_sender = sender # 找到该发件人最后放入邮箱的邮件 latest_email = sender_emails[max_sender][-1] # 从发件人的未读邮件列表中移除该邮件 sender_emails[max_sender].pop() # 从所有未读邮件列表中移除该邮件 all_emails.remove(latest_email) # 输出该邮件的编号 print(latest_email) ``` 代码解释: 1. 数据结构: - `sender_emails` 是一个字典,用于存储每个发件人的未读邮件列表。键是发件人编号,值是该发件人的未读邮件编号列表。 - `all_emails` 是一个列表,用于存储所有未读邮件的编号。 2. 接收新邮件: - 当输入为 `+ sender email_id` 时,将 `email_id` 添加到 `sender` 的未读邮件列表中,并添加到 `all_emails` 列表中。 3. 查看优先度最高的邮件: - 当输入为 `-` 时,首先检查 `all_emails` 是否为空。如果为空,输出 `-1`。 - 否则,遍历 `sender_emails` 字典,找到发件人出现次数最多的发件人。 - 从该发件人的未读邮件列表中取出最后一个邮件编号,将其从 `sender_emails` 和 `all_emails` 中移除,并输出该邮件编号。 复杂度分析: - 时间复杂度:接收新邮件的操作时间复杂度为 $O(1)$,查看优先度最高的邮件的操作时间复杂度为 $O(m)$,其中 $m$ 是发件人的数量。 - 空间复杂度:$O(k)$,其中 $k$ 是未读邮件的总数。 ######[AI问答 | 754点数解答 | 2025-12-08 17:42:07]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)469
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)352
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)425
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)417
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)468
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)271
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)399
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)423
- Java调用Python接口中文乱码问题:字符编码统一解决方案(讯飞星火 | 344点数解答 | 2024-06-06 17:19:55)534
- 解决Java调用Python接口时中文值乱码问题:设置字符编码为UTF-8(讯飞星火 | 264点数解答 | 2024-06-06 17:27:09)397
- 医院系统:信息添加、查询与修改操作全流程展示( | 31点数解答 | 2024-05-22 11:20:34)509