1+ class Twitter :
2+
3+ def __init__ (self ):
4+ self .followData = collections .defaultdict (set )
5+ self .tweetData = collections .defaultdict (list )
6+ self .count = 0
7+
8+
9+ def postTweet (self , userId : int , tweetId : int ) -> None :
10+ self .tweetData [userId ].append ((self .count , tweetId ))
11+ self .count -= 1
12+
13+
14+ def getNewsFeed (self , userId : int ) -> List [int ]:
15+ newsFeed = []
16+ h = []
17+
18+ self .followData [userId ].add (userId )
19+ for followeeId in self .followData [userId ]:
20+ if followeeId not in self .tweetData : continue
21+ index = len (self .tweetData [followeeId ])- 1
22+ count , tweetId = self .tweetData [followeeId ][index ]
23+ h .append ((count , tweetId , followeeId , index - 1 ))
24+ heapq .heapify (h )
25+
26+ while h and len (newsFeed )< 10 :
27+ _ , tweetId , userId , index = heapq .heappop (h )
28+ newsFeed .append (tweetId )
29+ if index >= 0 :
30+ count , tweetId2 = self .tweetData [userId ][index ]
31+ heapq .heappush (h , (count , tweetId2 , userId , index - 1 ))
32+ return newsFeed
33+
34+
35+
36+ def follow (self , followerId : int , followeeId : int ) -> None :
37+ self .followData [followerId ].add (followeeId )
38+
39+ def unfollow (self , followerId : int , followeeId : int ) -> None :
40+ if followerId not in self .followData : return
41+ self .followData [followerId ].remove (followeeId )
42+
43+
44+ # Your Twitter object will be instantiated and called as such:
45+ # obj = Twitter()
46+ # obj.postTweet(userId,tweetId)
47+ # param_2 = obj.getNewsFeed(userId)
48+ # obj.follow(followerId,followeeId)
49+ # obj.unfollow(followerId,followeeId)
0 commit comments