AlgoMooc
← 返回题库

X3037. 小慕的消息分发系统

中等通过率 100% · 提交 5 · 通过 5
模拟哈希表

小慕正在开发一个简易版的消息系统,该系统允许用户消息,同时支持订阅和取消订阅其他用户(默认情况下,每个用户已经订阅了自己)。 在这个系统中,每个用户都由一个唯一的`UserID`标识,每条消息也有一个唯一的`MsgID`。请实现以下功能: | 序号 | 方法 | 返回值 | 说明 | | - | - | - | - | | 1 | `Brocast(UserID, MsgID)` | 返回发送的消息条数 | `UserID`对应的用户广播了一条编号为`MsgID`的新消息 | | 2 | `GetMsg(UserID, N)` | 返回最近的N条消息 | 获取`UserID`对应的用户接收到的消息,并按照消息出现的先后。如果不足N条,则按实际条数输出;如果没有任何消息,则返回`-1` | | 3 | `Subscribe(UserID1, UserID2)` | 返回订阅状态 | `0`表示订阅成功,`1`表示重复订阅,`2`表示不能订阅自己。`UserID1`订阅了`UserID2`,意味着`UserID2`广播的消息在订阅生效后,`UserID1`也能收到 | | 4 | `UnSubscribe(UserID1, UserID2)` | 返回取消订阅状态 | `0`表示取消成功,`1`表示取消失败(因为不存在该订阅关系),`2`表示失败(不能取消对自己的订阅)。当`UserID1`取消对`UserID2`的订阅后,`UserID1`将不再接收到`UserID2`广播的消息 | 所有指令按时间顺序输入,用户广播的消息将被系统永久存储,不会丢失。订阅关系一旦建立,用户可以查询到目标用户之前发送的消息。

提示:带虚线的词点一下有通俗解释。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。