Ctrl K

Квадрат без повторяющихся меток

Средняя
На плоскости отмечены точки points, у точки i есть метка — буква labels[i]. Рассмотрим квадраты с центром в начале координат и сторонами, параллельными осям; сторона может быть и нулевой. Точка считается внутри квадрата, если лежит внутри или на его границе. Квадрат подходит, если внутри него нет двух точек с одинаковой меткой. Верните наибольшее число точек, которое может оказаться внутри подходящего квадрата.
Пример 1
points=[[1, 0], [0, -2], [3, 3], [-2, 1]], labels='abca' → 1

Квадрат с половиной стороны 2 накрывает точки [1, 0], [0, -2] и [-2, 1], но у первой и последней одна метка a. Квадрат с половиной стороны 1 накрывает только [1, 0]. Ответ — 1.

Пример 2
points=[[0, 0], [2, -1], [-1, 2], [5, 0]], labels='xyzx' → 3

Квадрат с половиной стороны 2 накрывает три точки с метками x, y, z. Чтобы захватить [5, 0], пришлось бы взять вторую x.

Пример 3
points=[[4, 4], [-4, 1]], labels='qq' → 0
Ограничения
  • 1 ≤ len(points) ≤ 10⁵
  • len(labels) = len(points)
  • points[i] = [x, y], -10⁹ ≤ x, y ≤ 10⁹
  • Все точки различны
  • labels состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлова, спрятанные в тексте СредняяВес по первой букве алфавита СредняяРазложить анаграммы по группам СредняяПодпоследовательность только одного слова СредняяПары с заданной разницей Средняя
загружаем Python…
Вход
points=[[1, 0], [0, -2], [3, 3], [-2, 1]], labels='abca'
Ожидается
1

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 79 тестов на сервере, включая скрытые.