Ctrl K

Накрыть точки прямоугольниками

Средняя
На плоскости даны точки points, где points[i] = [x, y], и число width. Нужно накрыть все точки прямоугольниками. Нижняя сторона каждого прямоугольника лежит на оси x: левый нижний угол — (x1, 0), правый верхний — (x2, y2), где x1 ≤ x2, y2 ≥ 0 и x2 − x1 ≤ width. Высота может быть любой. Точка накрыта, если лежит внутри прямоугольника или на его границе; прямоугольники могут перекрываться. Верните наименьшее число прямоугольников, которыми можно накрыть все точки.
Пример 1
points=[[4, 7], [0, 2], [6, 1], [1, 9], [9, 3]], width=2 → 3

Хватает трёх прямоугольников: по x от 0 до 2 (точки с x = 0 и 1), от 4 до 6 (x = 4 и 6) и от 9 до 11 (x = 9).

Пример 2
points=[[5, 1], [5, 8], [5, 0]], width=0 → 1

Все точки на одной вертикали x = 5 — достаточно одного прямоугольника нулевой ширины.

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

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