Entrevista a los 150 mejoresfácil

Detectar cuadrados

Guía detallada e implementación Python para el problema 'Detectar cuadrados'.

Declaración del problema

fácil

Se le proporciona una secuencia de puntos en el plano X-Y. Diseñe una estructura de datos que:

- Agrega nuevos puntos de la transmisión. Se permiten puntos duplicados y deben tratarse como puntos diferentes.

- Dado un punto de consulta, cuenta el número de formas de elegir tres puntos de la estructura de datos de modo que los tres puntos y el punto de consulta formen un cuadrado alineado con el eje con un área positiva.

Un cuadrado alineado con el eje es un cuadrado cuyos bordes tienen la misma longitud y son paralelos o perpendiculares al eje x y al eje y.

Implemente una función detectSquares(operations: list, arguments: list) -> list donde las operaciones sean 'Detectarcuadrados', 'agregar' o 'contar' y los argumentos sean los parámetros correspondientes. Devuelve una lista de resultados (Ninguno para constructor y complemento).

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

Ejemplos

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 la posibilidad de utilizar estructuras de datos específicas de matemáticas y geometría, como conjuntos o montones.
Edge Cases to Watch
  • Estructuras de entrada vacías
  • Entradas de un solo elemento
  • Grandes límites numéricos

¿Listo para resolver?

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

Abrir en el 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 recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.