Top 150-InterviewEinfach

Entwerfen Sie Twitter

Detaillierte Anleitung und Python-Implementierung für das Problem „Design Twitter“.

Problemstellung

Einfach

Entwerfen Sie eine vereinfachte Version von Twitter, in der Benutzer Tweets posten, einem anderen Benutzer folgen bzw. ihm nicht mehr folgen können und die 10 neuesten Tweets im Newsfeed des Benutzers sehen können.

Implementieren Sie die Twitter-Klasse:

- Twitter() Initialisiert Ihr Twitter-Objekt.

- postTweet(userId: int, tweetId: int) Erstellt einen neuen Tweet mit der ID tweetId durch den Benutzer userId.

- getNewsFeed(userId: int) -> List[int] Ruft die 10 neuesten Tweet-IDs im Newsfeed des Benutzers ab.

- follow(followerId: int, followeeId: int) Der Benutzer mit der ID followerId hat begonnen, dem Benutzer mit der ID followeeId zu folgen.

- unfollow(followerId: int, followeeId: int) Der Benutzer mit der ID followerId hat damit begonnen, dem Benutzer mit der ID followeeId nicht mehr zu folgen.

Die Eingabe ist eine Liste von Operationen und Argumenten. Implementieren Sie eine Funktion twitter(operations: list, arguments: list) -> list, die eine Ergebnisliste zurückgibt (None für Konstruktor/postTweet/follow/unfollow und List[int] für getNewsFeed).

Einschränkungen
  • 1 <= userId, followerId, followeeId <= 500
  • 0 <= tweetId <= 10^4
  • All the tweets have unique IDs
  • At most 30000 calls will be made in total

Beispiele

Example 1
Input
operations = ["Twitter", "postTweet", "getNewsFeed", "follow", "postTweet", "getNewsFeed", "unfollow", "getNewsFeed"], arguments = [[], [1, 5], [1], [1, 2], [2, 6], [1], [1, 2], [1]]
Output
[None, None, [5], None, None, [6, 5], None, [5]]
Explanation

User 1 posts tweet 5. News feed: [5]. User 1 follows 2. User 2 posts tweet 6. News feed: [6, 5]. User 1 unfollows 2. News feed: [5].

Need a Hint?
Erwägen Sie die Verwendung von Heap-/Prioritätswarteschlangen-spezifischen Datenstrukturen wie Sets oder Heaps.
Edge Cases to Watch
  • Leere Eingabestrukturen
  • Einzelelementeingaben
  • Große numerische Grenzen

Bereit zur Lösung?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

Im Editor öffnen
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.