355. 設(shè)計推特
設(shè)計一個簡化版的推特(Twitter)马僻,可以讓用戶實現(xiàn)發(fā)送推文插佛,關(guān)注/取消關(guān)注其他用戶,能夠看見關(guān)注人(包括自己)的最近十條推文寒屯。你的設(shè)計需要支持以下的幾個功能:
- postTweet(userId, tweetId): 創(chuàng)建一條新的推文
- getNewsFeed(userId): 檢索最近的十條推文巍棱。每個推文都必須是由此用戶關(guān)注的人或者是用戶自己發(fā)出的惑畴。推文必須按照時間順序由最近的開始排序。
- follow(followerId, followeeId): 關(guān)注一個用戶
- unfollow(followerId, followeeId): 取消關(guān)注一個用戶
示例:
Twitter twitter = new Twitter();
// 用戶1發(fā)送了一條新推文 (用戶id = 1, 推文id = 5).
twitter.postTweet(1, 5);
// 用戶1的獲取推文應(yīng)當(dāng)返回一個列表航徙,其中包含一個id為5的推文.
twitter.getNewsFeed(1);
// 用戶1關(guān)注了用戶2.
twitter.follow(1, 2);
// 用戶2發(fā)送了一個新推文 (推文id = 6).
twitter.postTweet(2, 6);
// 用戶1的獲取推文應(yīng)當(dāng)返回一個列表如贷,其中包含兩個推文,id分別為 -> [6, 5].
// 推文id6應(yīng)當(dāng)在推文id5之前到踏,因為它是在5之后發(fā)送的.
twitter.getNewsFeed(1);
// 用戶1取消關(guān)注了用戶2.
twitter.unfollow(1, 2);
// 用戶1的獲取推文應(yīng)當(dāng)返回一個列表杠袱,其中包含一個id為5的推文.
// 因為用戶1已經(jīng)不再關(guān)注用戶2.
twitter.getNewsFeed(1);</pre>