酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]