Class Twitter

java.lang.Object
g0301_0400.s0355_design_twitter.Twitter

public class Twitter extends Object
355 - Design Twitter.<p>Medium</p> <p>Design a simplified version of Twitter where users can post tweets, follow/unfollow another user, and is able to see the <code>10</code> most recent tweets in the user&rsquo;s news feed.</p> <p>Implement the <code>Twitter</code> class:</p> <ul> <li><code>Twitter()</code> Initializes your twitter object.</li> <li><code>void postTweet(int userId, int tweetId)</code> Composes a new tweet with ID <code>tweetId</code> by the user <code>userId</code>. Each call to this function will be made with a unique <code>tweetId</code>.</li> <li><code>List<Integer> getNewsFeed(int userId)</code> Retrieves the <code>10</code> most recent tweet IDs in the user&rsquo;s news feed. Each item in the news feed must be posted by users who the user followed or by the user themself. Tweets must be <strong>ordered from most recent to least recent</strong>.</li> <li><code>void follow(int followerId, int followeeId)</code> The user with ID <code>followerId</code> started following the user with ID <code>followeeId</code>.</li> <li><code>void unfollow(int followerId, int followeeId)</code> The user with ID <code>followerId</code> started unfollowing the user with ID <code>followeeId</code>.</li> </ul> <p><strong>Example 1:</strong></p> <p><strong>Input</strong></p> <pre><code> [&quot;Twitter&quot;, &quot;postTweet&quot;, &quot;getNewsFeed&quot;, &quot;follow&quot;, &quot;postTweet&quot;, &quot;getNewsFeed&quot;, &quot;unfollow&quot;, &quot;getNewsFeed&quot;] [ [], [1, 5], [1], [1, 2], [2, 6], [1], [1, 2], [1]] </code></pre> <p><strong>Output:</strong></p> <pre><code> [null, null, [5], null, null, [6, 5], null, [5]] </code></pre> <p><strong>Explanation:</strong></p> <pre><code> 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]. return [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]. // Tweet id 6 should precede tweet id 5 because it is posted after tweet id 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], since user 1 is no longer following user 2. </code></pre> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= userId, followerId, followeeId <= 500</code></li> <li><code>0 <= tweetId <= 10<sup>4</sup></code></li> <li>All the tweets have <strong>unique</strong> IDs.</li> <li>At most <code>3 * 10<sup>4</sup></code> calls will be made to <code>postTweet</code>, <code>getNewsFeed</code>, <code>follow</code>, and <code>unfollow</code>.</li> </ul>
  • Constructor Details

    • Twitter

      public Twitter()
  • Method Details

    • postTweet

      public void postTweet(int userId, int tweetId)
    • getNewsFeed

      public List<Integer> getNewsFeed(int userId)
    • follow

      public void follow(int followerId, int followeeId)
    • unfollow

      public void unfollow(int followerId, int followeeId)
    • checkNewUser

      public void checkNewUser(int userId)