Top 150 InterviewЛегко

Обнаружение квадратов ---ПИСЕП--- Подробное руководство и реализация __PYTERM_0__ для задачи «Обнаружение квадратов». ---ПИСЕП--- Вам дан поток точек на плоскости XY. Спроектируйте структуру данных, которая: - Добавляет новые точки из потока. Дублирующиеся точки допускаются и должны рассматриваться как разные точки. - Учитывая точку запроса, подсчитывает количество способов выбрать три точки из структуры данных так, чтобы эти три точки и точка запроса образовывали выровненный по оси квадрат с положительной площадью. Квадрат, выровненный по оси, — это квадрат, все края которого имеют одинаковую длину и параллельны или перпендикулярны осям X и Y. Реализуйте функцию __PYCODE_0__, где операции — это «DetectSquares», «add» или «count», а аргументы — соответствующие параметры. Возвращает список результатов (нет для конструктора и добавления). ---ПИСЕП--- 150 лучших интервью ---ПИСЕП--- Математика и геометрия ---ПИСЕП--- Задача «Определить квадраты» — ключевая задача раздела «Математика и геометрия». ---ПИСЕП--- Эта реализация фокусируется на логике простого уровня в __PYTERM_0__. ---ПИСЕП--- В предоставляемых нами решениях мы уделяем приоритетное внимание технической точности и читаемости кода. ---ПИСЕП--- Алгоритмическая инженерия ---ПИСЕП--- Соревновательное программирование ---ПИСЕП--- Технические оценки ---ПИСЕП--- Визуализация логического потока для обнаружения квадратов. ---ПИСЕП--- Внимательно прочитайте постановку задачи для Detect Squares. ---ПИСЕП--- Нарисуйте простое итеративное решение. ---ПИСЕП--- Ищите лишние вычисления. ---ПИСЕП--- Используйте хеширование или сортировку, чтобы ускорить процесс. ---ПИСЕП--- Очистите код для производственных стандартов. ---ПИСЕП--- Пустые входные структуры ---ПИСЕП--- Одноэлементные входы ---ПИСЕП--- Большие числовые границы ---ПИСЕП--- Объясните логику вашего подхода к математике и геометрии. ---ПИСЕП--- Обсудите крайние случаи, такие как нулевые или пустые входные данные. ---ПИСЕП--- Применяются стандартные свойства задач по математике и геометрии. ---ПИСЕП--- Рассмотрите возможность использования структур данных, специфичных для математики и геометрии, таких как наборы или кучи. ---ПИСЕП--- Подмножества ---ПИСЕП--- Подробное руководство и реализация __PYTERM_0__ для проблемы «Подмножества». ---ПИСЕП--- Учитывая целочисленный массив уникальных элементов, верните все возможные подмножества (набор мощности). Набор решений не должен содержать повторяющихся подмножеств. Верните решение в любом порядке. Реализуйте функцию __PYCODE_0__. ---ПИСЕП--- 150 лучших интервью ---ПИСЕП--- Возврат ---ПИСЕП--- Проблема «Подмножества» — ключевая задача в разделе «Обратный поиск». ---ПИСЕП--- Эта реализация фокусируется на логике простого уровня в __PYTERM_0__. ---ПИСЕП--- В предоставляемых нами решениях мы уделяем приоритетное внимание технической точности и читаемости кода. ---ПИСЕП--- Алгоритмическая инженерия ---ПИСЕП--- Соревновательное программирование ---ПИСЕП--- Технические оценки ---ПИСЕП--- Визуализация логического потока для подмножеств. ---ПИСЕП--- Внимательно прочитайте постановку задачи для подмножеств. ---ПИСЕП--- Нарисуйте простое итеративное решение. ---ПИСЕП--- Ищите лишние вычисления. ---ПИСЕП--- Используйте хеширование или сортировку, чтобы ускорить процесс.

Detailed guide and Python implementation for the 'Detect Squares' problem.

Постановка задачи

Легко

You are given a stream of points on the X-Y plane. Design a data structure that:

- Adds new points from the stream. Duplicate points are allowed and should be treated as different points.

- Given a query point, counts the number of ways to choose three points from the data structure such that the three points and the query point form an axis-aligned square with positive area.

An axis-aligned square is a square whose edges are all the same length and are either parallel or perpendicular to the x-axis and the y-axis.

Implement a function detectSquares(operations: list, arguments: list) -> list where operations are 'DetectSquares', 'add', or 'count', and arguments are the corresponding parameters. Returns a list of results (None for constructor and add).

Ограничения
  • point.length == 2
  • 0 <= x, y <= 1000
  • At most 3000 calls in total will be made to add and count

Примеры

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?
Consider using Math & Geometry-specific data structures like sets or heaps.
Edge Cases to Watch
  • Empty input structures
  • Single element inputs
  • Large numerical bounds

Готовы решить?

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

Открыть в редакторе
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

Рекомендуемые ресурсы Python

Расширьте свои знания с помощью соответствующих интерактивных руководств, шпаргалок и сравнений кода.

Учебник по Python

Циклы Python

Узнайте, как использовать циклы Python для перебора данных. Освойте циклы for, while, прерывание, продолжение и лучшие практики работы с циклами с помощью интерактивных примеров.

Посмотреть ресурс
Практическое руководство

Как отсортировать список в Python

Узнайте, как сортировать список в Python с помощью метода sort() и функции sorted(). Ознакомьтесь с примерами пользовательской сортировки ключей и обратного порядка.

Посмотреть ресурс
Шпаргалка

Шпаргалка по строковым методам Python

Полное справочное руководство по манипулированию строками в Python. Мастер форматирования, поиска, разделения, замены и проверки свойств строк.

Посмотреть ресурс
Сравнение языков

Python против JavaScript: какой язык программирования лучше?

Всестороннее сравнение Python и JavaScript. Изучите синтаксические различия, производительность, варианты использования (серверная и клиентская части) и примеры кодирования.

Посмотреть ресурс