150 principais entrevistasFácil

Detectar quadrados

Guia detalhado e implementação de Python para o problema 'Detectar Quadrados'.

Declaração do problema

Fácil

Você recebe um fluxo de pontos no plano XY. Projete uma estrutura de dados que:

- Adiciona novos pontos do stream. Pontos duplicados são permitidos e devem ser tratados como pontos diferentes.

- Dado um ponto de consulta, conta o número de maneiras de escolher três pontos da estrutura de dados, de modo que os três pontos e o ponto de consulta formem um quadrado alinhado ao eixo com área positiva.

Um quadrado alinhado ao eixo é um quadrado cujas arestas têm todas o mesmo comprimento e são paralelas ou perpendiculares ao eixo x e ao eixo y.

Implemente uma função detectSquares(operations: list, arguments: list) -> list onde as operações são 'DetectSquares', 'add' ou 'count' e os argumentos são os parâmetros correspondentes. Retorna uma lista de resultados (Nenhum para construtor e adição).

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

Exemplos

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?
Considere usar estruturas de dados específicas de matemática e geometria, como conjuntos ou heaps.
Edge Cases to Watch
  • Estruturas de entrada vazias
  • Entradas de elemento único
  • Grandes limites numéricos

Pronto para resolver?

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

Abrir no Editor
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

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.