Проблема с гниющими апельсинами
В заданной сетке каждая ячейка может иметь одно из трех значений:
- значение
0
представляет собой пустую ячейку; - значение
1
представляет свежий апельсин; - значение
2
представляет гнилой апельсин.
Каждую минуту любой свежий апельсин, примыкающий (в четырех направлениях) к гнилому апельсину, становится гнилым.
Возвращает минимальное количество минут, которое должно пройти, пока ни в одной ячейке не останется свежего апельсина. Если это невозможно, вместо этого верните -1
.
Пример 1:
Input: [[2,1,1],[1,1,0],[0,1,1]] Output: 4
Пример 2:
Input: [[2,1,1],[0,1,1],[1,0,1]] Output: -1 Explanation: The orange in the bottom left corner (row 2, column 0) is never rotten, because rotting only happens 4-directionally.
Пример 3:
Input: [[0,2]] Output: 0 Explanation: Since there are already no fresh oranges at minute 0, the answer is just 0.
Примечание.
1 <= grid.length <= 10
1 <= grid[0].length <= 10
grid[i][j]
— это только0
,1
или2
.
Решение
В первую очередь нужно проверить, что есть хотя бы свежий апельсин и что свежие апельсины могут быть гнилыми.
Затем нам просто нужно перебрать сетку, составляя каждую итерацию в минуту, и при нахождении свежего апельсина нам нужно проверить, не соседствует ли он с гнилым апельсином. Если это так, мы должны превратить этот апельсин в гнилой.
Имейте в виду использование скопированной сетки, потому что, если мы просто используем одну, мы получим неправильные значения для текущей минуты.
Здесь вы можете увидеть производительность моего решения (имейте в виду, что Runtime может варьироваться в зависимости от сервера):
Вы можете подписаться на меня в LinkedIn.