問題描述
來源:LeetCode第994題
難度:中等
在給定的mxn網格grid中,每個單元格可以有以下三個值之一:
值 0 代表空單元格;
值 1 代表新鮮橘子;
值 2 代表腐爛的橘子。
每分鐘,腐爛的橘子周圍4個方向上相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回-1。
示例 1:
輸入:grid = [[2,1,1],[1,1,0],[0,1,1]]
輸出:4
示例 2:
輸入:grid = [[2,1,1],[0,1,1],[1,0,1]]
輸出:-1
解釋:左下角的橘子(第 2 行, 第 0 列)永遠不會腐爛,因為腐爛只會發生在 4 個正向上。
示例 3:
輸入:grid = [[0,2]]
輸出:0
解釋:因為 0 分鐘時已經沒有新鮮橘子了,所以答案就是 0 。
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 10
grid[i][j] 僅為 0、1 或 2
BFS解決
題中說的是每個腐爛橘子的上下左右四個方向的新鮮橘子1分鐘之後都會腐爛,一種解決思路就是先找出所有腐爛的橘子把他們放到一個隊列中,下一步遍歷隊列中所有腐爛的橘子,往他們的上下左右四個方向查找,如果有新鮮的橘子,就讓他們腐爛,然後把他們在加入到隊列中……直到隊列為空為止。我們以示例一為例來看一下
我們來看下代碼

●640,BFS和DFS兩種方式解飛地的數量
●612,BFS和DFS解奇偶樹
●586,BFS和DFS解層數最深葉子節點的和
●532,BFS解打開轉盤鎖
截止到目前我已經寫了600多道算法題了,為了方便大家閱讀,我把部分算法題整理成了pdf文檔,目前有1000多頁,大家可以在下面公眾號「數據結構和算法」中回復關鍵字「pdf」即可獲取下載鏈接。
想學習算法,還可以長按下面二維碼加我微信,我給你拉到算法學習群,在工作中或者學習中遇到不會的問題都可以在群里討論。
