150 najlepszych wywiadówŁatwe

Zaprojektuj Twittera

Szczegółowy przewodnik i implementacja Python dla problemu „Design Twitter”.

Oświadczenie o problemie

Łatwe

Zaprojektuj uproszczoną wersję Twittera, w której użytkownicy mogą publikować tweety, śledzić/przestawać obserwować innego użytkownika i widzieć 10 najnowszych tweetów w aktualnościach użytkownika.

Zaimplementuj klasę Twittera:

- Twitter() Inicjuje obiekt Twittera.

- postTweet(userId: int, tweetId: int) Tworzy nowy tweet z identyfikatorem tweetId według identyfikatora użytkownika userId.

- getNewsFeed(userId: int) -> List[int] Pobiera 10 najnowszych identyfikatorów tweetów z kanału informacyjnego użytkownika.

- follow(followerId: int, followeeId: int) Użytkownik o identyfikatorze followerId rozpoczął śledzenie użytkownika o identyfikatorze followeeId.

- unfollow(followerId: int, followeeId: int) Użytkownik o identyfikatorze followerId zaczął przestać obserwować użytkownika o identyfikatorze followeeId.

Dane wejściowe to lista operacji i argumentów. Zaimplementuj funkcję twitter(operations: list, arguments: list) -> list, która zwraca listę wyników (Brak dla konstruktora/postTweet/follow/unfollow i List[int] dla getNewsFeed).

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

Przykłady

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?
Rozważ użycie struktur danych specyficznych dla sterty/kolejki priorytetowej, takich jak zestawy lub sterty.
Edge Cases to Watch
  • Puste struktury wejściowe
  • Wejścia jednoelementowe
  • Duże granice liczbowe

Gotowy do rozwiązania?

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

Otwórz w Edytorze
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

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.