150 najlepszych wywiadówŁatwe

Wykryj kwadraty

Szczegółowy przewodnik i implementacja Python dla problemu „Wykryj kwadraty”.

Oświadczenie o problemie

Łatwe

Otrzymujesz strumień punktów na płaszczyźnie X-Y. Zaprojektuj strukturę danych, która:

- Dodaje nowe punkty ze strumienia. Zduplikowane punkty są dozwolone i należy je traktować jako różne punkty.

- Biorąc pod uwagę punkt zapytania, zlicza liczbę sposobów wybrania trzech punktów ze struktury danych w taki sposób, że trzy punkty i punkt zapytania tworzą kwadrat wyrównany do osi i obszar dodatni.

Kwadrat wyrównany do osi to kwadrat, którego wszystkie krawędzie mają tę samą długość i są równoległe lub prostopadłe do osi x i osi y.

Zaimplementuj funkcję detectSquares(operations: list, arguments: list) -> list, w której operacje to „DetectSquares”, „add” lub „count”, a argumenty są odpowiednimi parametrami. Zwraca listę wyników (Brak dla konstruktora i dodania).

Ograniczenia
  • point.length == 2
  • 0 <= x, y <= 1000
  • At most 3000 calls in total will be made to add and count

Przykłady

Example 1
Input
["DetectSquares","add","add","add","count","count","add","count"], [[],[3,10],[11,2],[3,2],[11,10],[14,8],[11,2],[11,10]]
Output
[None,None,None,None,1,0,None,2]
Explanation

After adding (3,10), (11,2), (3,2): count(11,10) finds 1 square with corners (3,10),(11,10),(11,2),(3,2). count(14,8) finds 0. After adding another (11,2): count(11,10) finds 2 squares (using each copy of (11,2)).

Need a Hint?
Rozważ użycie struktur danych specyficznych dla matematyki i geometrii, 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.