Faaez Razeen

Design Twitter

  • 2 min read
  • LC-Medium
  • Binary-heap
  • Design-problem

3 years ago

Solution

TimeSpaceExplanation
O()O()
class Twitter: def __init__(self): self.tweet_count = 0 self.user_tweets = defaultdict(list) self.followees = defaultdict(set) def postTweet(self, userId: int, tweetId: int) -> None: self.tweet_count -= 1 self.user_tweets[userId].append((self.tweet_count, tweetId)) def getNewsFeed(self, userId: int) -> List[int]: news_feed = [] min_heap = [] for user_id in list(self.followees[userId]) + [userId]: for user_tweet in self.user_tweets[user_id]: min_heap.append(user_tweet) heapify(min_heap) while min_heap and len(news_feed) < 10: news_feed.append(heappop(min_heap)[1]) return news_feed def follow(self, followerId: int, followeeId: int) -> None: self.followees[followerId].add(followeeId) def unfollow(self, followerId: int, followeeId: int) -> None: if followeeId in self.followees[followerId]: self.followees[followerId].remove(followeeId)