
									 Problem
								
								
									 Solution
								
								
									 Submissions
								
								
							Design a Twitter
								Certification: Advanced Level
								Accuracy: 0%
								Submissions: 0
								Points: 20
							
							Write a C++ program to design a Twitter-like timeline system that supports posting tweets, retrieving news feeds, following and unfollowing users.
Example 1
- Input: ["Twitter", "postTweet", "getNewsFeed", "follow", "postTweet", "getNewsFeed", "unfollow", "getNewsFeed"] [[], [1, 5], [1], [1, 2], [2, 6], [1], [1, 2], [1]]
- Output: [null, null, [5], null, null, [6, 5], null, [5]]
- Explanation: - Twitter twitter = new Twitter();
- twitter.postTweet(1, 5); // User 1 posts a new tweet (id = 5)
- twitter.getNewsFeed(1); // User 1's news feed should return a list with 1 tweet id -> [5]
- twitter.follow(1, 2); // User 1 follows user 2
- twitter.postTweet(2, 6); // User 2 posts a new tweet (id = 6)
- twitter.getNewsFeed(1); // User 1's news feed should return a list with 2 tweet ids -> [6, 5]
- twitter.unfollow(1, 2); // User 1 unfollows user 2
- twitter.getNewsFeed(1); // User 1's news feed should return a list with 1 tweet id -> [5]
 
Example 2
- Input: ["Twitter", "postTweet", "postTweet", "postTweet", "follow", "getNewsFeed"] [[], [1, 10], [1, 11], [2, 12], [1, 2], [1]]
- Output: [null, null, null, null, null, [12, 11, 10]]
- Explanation: - Twitter twitter = new Twitter();
- twitter.postTweet(1, 10); // User 1 posts a new tweet (id = 10)
- twitter.postTweet(1, 11); // User 1 posts a new tweet (id = 11)
- twitter.postTweet(2, 12); // User 2 posts a new tweet (id = 12)
- twitter.follow(1, 2); // User 1 follows user 2
- twitter.getNewsFeed(1); // User 1's news feed should return the 3 tweets -> [12, 11, 10]
 
Constraints
- 1 <= userId, followerId, followeeId <= 500
- 0 <= tweetId <= 10^4
- All the tweets have unique IDs.
- At most 3 * 10^4 calls will be made to postTweet, getNewsFeed, follow, and unfollow.
- Time Complexity: O(N log K) for getNewsFeed operation where N is the total number of tweets and K is the feed size (10)
- Space Complexity: O(U + E + T) where U is the number of users, E is the number of follow relationships, and T is the number of tweets
Editorial
									
												
My Submissions
										All Solutions
									| Lang | Status | Date | Code | 
|---|---|---|---|
| You do not have any submissions for this problem. | |||
| User | Lang | Status | Date | Code | 
|---|---|---|---|---|
| No submissions found. | ||||
Solution Hints
- Use a hash map to store user follow relationships.
- Use a hash map to store user tweets with timestamps.
- Use a priority queue (max heap) for efficiently merging multiple user tweet streams.
- Consider using a linked list or vector for maintaining each user's tweets.
- Remember to maintain chronological order of tweets using timestamps.
