LeetCode 15 腐爛的橘子 BFS問題

2022-06-29 05:39:08 字數 1148 閱讀 8591

題目描述

難度:簡單

在給定的網格中,每個單元格可以有以下三個值之一:

值 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,否則返回分鐘數

**如下

class

solution , 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是...