Practice Problem
Design Twitter
Difficulty: Medium
Design a simplified Twitter with post, follow/unfollow, and a news feed that merges recent tweets from followed users using a heap.
Design Twitter
Design a simplified version of Twitter where users can post tweets, follow/unfollow another user, and see the 10 most recent tweets in their news feed.
Implement the Twitter class:
Twitter(): Initializes the Twitter object.postTweet(userId, tweetId): Composes a new tweet with IDtweetIdby the useruserId. Each call to this function will have a uniquetweetId.getNewsFeed(userId): Retrieves the 10 most recent tweet IDs in the user's news feed. Each item must be posted by users the user follows or by the user themselves. Tweets should be ordered from most recent to least recent.follow(followerId, followeeId): The user with IDfollowerIdstarts following the user with IDfolloweeId.unfollow(followerId, followeeId): The user with IDfollowerIdstops following the user with IDfolloweeId.
Examples
Example 1:
Input:
twitter = Twitter()
twitter.postTweet(1, 5) // User 1 posts tweet 5
twitter.getNewsFeed(1) // returns [5]
twitter.follow(1, 2) // User 1 follows user 2
twitter.postTweet(2, 6) // User 2 posts tweet 6
twitter.getNewsFeed(1) // returns [6, 5]
twitter.unfollow(1, 2) // User 1 unfollows user 2
twitter.getNewsFeed(1) // returns [5]Constraints
1 <= userId, followerId, followeeId <= 5000 <= tweetId <= 10^4- All tweets have unique IDs.
- At most
3 * 10^4calls will be made topostTweet,getNewsFeed,follow, andunfollow.
Expected Complexity
- Time: O(k log k) for
getNewsFeedwhere k is the number of followed users; O(1) for other operations - Space: O(N) where N is total number of tweets and follow relationships
MEDIUM
Heap
Min Heap
Priority Queue
Hash Map / Dictionary
Data Structures
Intermediate
0 views
Solution
Hints
Hint 1
Hint 2
Premium
Hint 3
Premium
This section is available for CodeSnatch Premium members only.
