Ctrl K

Ближайшая станция по прямой

Лёгкая
Курьер стоит в точке (home_x, home_y) на клетчатом поле. В массиве stations записаны точки зарядных станций: stations[i] = [a, b] — станция в точке (a, b). Курьеру подходят только станции, до которых можно доехать по прямой: у станции должна совпадать с курьером координата x или координата y (или обе — станция может стоять прямо в той же точке). Расстояние между точками (x1, y1) и (x2, y2) считается как |x1 - x2| + |y1 - y2|. Верните индекс подходящей станции с наименьшим расстоянием до курьера; если таких несколько — наименьший индекс. Если подходящих станций нет, верните -1.
Пример 1
home_x=5, home_y=2, stations=[[5, 9], [1, 1], [8, 2], [5, 4]] → 3

По прямой доступны станции 0 (та же x, расстояние 7), 2 (та же y, расстояние 3) и 3 (та же x, расстояние 2). Ближайшая — станция 3. Станция 1 не лежит ни на одной из двух прямых.

Пример 2
home_x=4, home_y=4, stations=[[2, 4], [6, 4], [4, 6]] → 0

Все три станции на расстоянии 2, поэтому выбираем ту, у которой индекс меньше, — 0.

Пример 3
home_x=1, home_y=1, stations=[[2, 3], [7, 7]] → -1

Ни одна станция не стоит на одной вертикали или горизонтали с курьером.

Ограничения
  • 1 ≤ len(stations) ≤ 10⁴
  • stations[i] состоит из двух чисел
  • 1 ≤ home_x, home_y, a, b ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПара с заданной суммой ЛёгкаяСжать повторы в отсортированном массиве ЛёгкаяВыкинуть лишнее значение ЛёгкаяМесто на отсортированной полке ЛёгкаяПрибавить единицу к числу из цифр Лёгкая
загружаем Python…
Вход
home_x=5, home_y=2, stations=[[5, 9], [1, 1], [8, 2], [5, 4]]
Ожидается
3

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