題目描述
難度:簡單
在給定的網格中,每個單元格可以有以下三個值之一:
值 0 代表空單元格;
值 1 代表新鮮橘子;
值 2 代表腐爛的橘子。
每分鐘,任何與腐爛的橘子(在 4 個正方向上)相鄰的新鮮橘子都會腐爛。
返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1。
示例 1:
輸入:[[2,1,1],[1,1,0],[0,1,1]]
輸出:4
示例 2:
輸入:[[2,1,1],[0,1,1],[1,0,1]]
輸出:-1
解釋:左下角的橘子(第 2 行, 第 0 列)永遠不會腐爛,因為腐爛只會發生在 4 個正向上。
示例 3:
輸入:[[0,2]]
輸出:0
解釋:因為 0 分鐘時已經沒有新鮮橘子了,所以答案就是 0 。
1 <= grid.length <= 10
1 <= grid[0].length <= 10
grid[i][j] 僅為 0、1 或 2
解題思路
這種需要一圈一圈往外傳播的一般用bfs解, 先找到起始所有腐爛的橘子,然後迴圈處理,把新腐爛的橘子加入下一次迴圈的佇列中, 當下一次迴圈的隊列為空時,說明不能繼續腐爛了, 判斷一下還有沒有新鮮的橘子,如果有,就返回-1,否則返回分鐘數
**如下
classsolution , p2 = ;
deque
queue=new arraydeque<>();
//把腐爛的橘子加入佇列中,作為開始擴散的起點
for(int i=0;i));}}
}//從腐爛的橘子開始感染,其實就是乙個bfs求無權圖最短路的問題
int steps=0;
while(!queue.isempty()));}}
}if(!queue.isempty())
}//遍歷矩陣,判斷是否有
LeetCode 腐爛的橘子 BFS
在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。輸入 2,1,1 1,1,0 0,1...
腐爛的橘子
題目描述 在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。思路分析 class so...
腐爛的橘子
描述 給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1 解題思路 1 bfs grid是...