Design a simplified version of Twitter where users can post tweets, follow/unfollow other users, and retrieve the most recent tweets in their news feed. Implement the following functionalities: 1. `postTweet(userId, tweetId)`: Compose a new tweet with ID `tweetId` by user `userId`. Each tweet must have a unique ID. 2. `getNewsFeed(userId)`: Retrieve the most recent 10 tweets in the user's news feed. The news feed includes the user's own tweets and tweets from users they follow. If there are fewer than 10 tweets available, return all available tweets. The tweets should be ordered from most recent to least recent. 3. `follow(followerId, followeeId)`: The user with ID `followerId` starts following the user with ID `followeeId`. 4. `unfollow(followerId, followeeId)`: The user with ID `followerId` stops following the user with ID `followeeId`. Assume that all user IDs and tweet IDs are integers. Implement the `Twitter` class with the following methods: * `Twitter()`: Initializes your twitter object. * `void postTweet(int userId, int tweetId)`: Composes a new tweet. * `List<Integer> getNewsFeed(int userId)`: Retrieves the most recent 10 tweet ids in the user's feed. Each item in the news feed must be a tweet id. * `void follow(int followerId, int followeeId)`: The user with ID followerId starts following the user with ID followeeId. * `void unfollow(int followerId, int followeeId)`: The user with ID followerId stops following the user with ID followeeId.
Twitter twitter = new Twitter();
twitter.postTweet(1, 5);
twitter.getNewsFeed(1);
twitter.follow(1, 2);
twitter.postTweet(2, 6);
twitter.getNewsFeed(1);
twitter.unfollow(1, 2);
twitter.getNewsFeed(1);
[null, null, [5], null, null, [6, 5], null, [5]]
Twitter twitter = new Twitter();
twitter.postTweet(1, 5);
twitter.postTweet(1, 3);
twitter.postTweet(1, 101);
twitter.postTweet(1, 13);
twitter.postTweet(1, 10);
twitter.postTweet(1, 2);
twitter.postTweet(1, 94);
twitter.postTweet(1, 505);
twitter.postTweet(1, 333);
twitter.postTweet(1, 22);
twitter.postTweet(1, 11);
twitter.getNewsFeed(1);
[null, null, null, null, null, null, null, null, null, null, null, [11, 22, 333, 505, 94, 2, 10, 13, 101, 3]]
Twitter twitter = new Twitter();
twitter.getNewsFeed(1);
[null, []]
1 ≤ userId, followerId, followeeId ≤ 500
0 ≤ tweetId ≤ 10000
All the tweets have unique IDs.
At most 500 calls will be made to postTweet, getNewsFeed, follow, and unfollow.
The number of tweets in the news feed will not exceed 10.