5814. Портящиеся фрукты

Medium 0 решили
В ящике фрукты лежат сеткой grid. 0 — пустая клетка, 1 — свежий фрукт, 2 — уже испорченный.

Каждую минуту каждый испорченный фрукт портит свежие в четырёх соседних клетках: вверх, вниз, влево и вправо. По диагонали порча не переходит. Пустая клетка не портится и порчу не проводит. Фрукт, который испортился в эту минуту, заражает соседей только со следующей.

Верните, через сколько минут свежих не останется. Если хотя бы один свежий фрукт так и не испортится, верните -1. Если свежих нет с самого начала, ответ 0.

Примеры:

Вход: grid = [[2, 1, 1], [1, 1, 0], [0, 1, 1]]
Выход: 4
Объяснение: Порча от левого верхнего угла доходит до правого нижнего за четыре минуты.
Вход: grid = [[2, 1, 1], [0, 1, 1], [1, 0, 1]]
Выход: -1
Объяснение: Нижний левый фрукт окружён пустыми клетками и не граничит с порчей даже по диагонали.
Вход: grid = [[0, 2]]
Выход: 0
Объяснение: Свежих нет, ждать нечего.

Ограничения:

1 <= grid.length <= 50 1 <= grid[0].length <= 50 строки одной длины grid[r][c] — одно из 0, 1, 2

Теги:

Часто на собесе Поиск в ширину

Комментарии (0)

Зарегистрируйтесь или войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!