Ctrl K

Путь до ближайшего перекуса

Средняя
Офис задан прямоугольной сеткой символов grid: - * — вы (такая клетка ровно одна); - # — клетка с перекусом (их может быть сколько угодно, в том числе ни одной); - O — свободный проход; - X — стена, через неё ходить нельзя. За один шаг можно перейти в соседнюю по стороне клетку, если там не стена. Верните наименьшее число шагов, за которое можно добраться до любой клетки с перекусом, или -1, если ни до одной не дойти.
Пример 1
grid=[["*", "O", "X", "#"], ["O", "O", "O", "O"], ["X", "#", "X", "O"]] → 3

До перекуса внизу: вниз на (1, 0), вправо на (1, 1), вниз на (2, 1) — 3 шага. До перекуса справа сверху пришлось бы идти 5 шагов.

Пример 2
grid=[["O", "X", "#"], ["*", "X", "O"]] → -1

Колонка стен отрезает перекус — ответ -1.

Ограничения
  • m == len(grid), n == len(grid[i])
  • 1 ≤ m, n ≤ 200
  • grid[i][j] — один из символов *, X, O, #
  • Символ * встречается ровно один раз
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОсушение замкнутых прудов СредняяУчастки суши на карте СредняяШаги до ближайшего выхода СредняяДождь стекает в оба моря СредняяОстановится ли шарик в цели Средняя
загружаем Python…
Вход
grid=[["*", "O", "X", "#"], ["O", "O", "O", "O"], ["X", "#", "X", "O"]]
Ожидается
3

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