dfs(深度優先搜尋)和 bfs(廣度優先搜尋)。它們各有不同的適應場景。
題目要求:返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。實際上就是求腐爛橘子到所有新鮮橘子的最短路徑。那麼這道題使用 bfs,應該是毫無疑問的了
這道題的主要思路是:
1.一開始,我們找出所有腐爛的橘子,將它們放入佇列,作為第 0 層的結點。
2.然後進行 bfs 遍歷,每個結點的相鄰結點可能是上、下、左、右四個方向的結點,注意判斷結點位於網格邊界的特殊情況。
3.由於可能存在無法被汙染的橘子,我們需要記錄新鮮橘子的數量。在 bfs 中,每遍歷到乙個橘子(汙染了乙個橘子),就將新鮮橘子的數量減一。如果 bfs 結束後這個數量仍未減為零,說明存在無法被汙染的橘子。
public
intorangesrotting
(int
grid)
else
if(grid[r]
[c]==2)
);// 將腐爛的橘子放入佇列,作為源點}}
}int round=0;
while
(count >0&&
!queue.
isempty()
));}
if(r+
1[c]==1)
);}if
(c-1
>
0&&grid[r]
[c-1]==
1));
}if(c+1
[c+1]==
1));
}}}if
(count >0)
else
};
腐爛的橘子
題目描述 在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。思路分析 class so...
腐爛的橘子
描述 給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1 解題思路 1 bfs grid是...
習題 腐爛的橘子
題目描述 在給定的網格中,每個單元格可以有以下三個值之一 值 0 代表空單元格 值 1 代表新鮮橘子 值 2 代表腐爛的橘子。每分鐘,任何與腐爛的橘子 在 4 個正方向上 相鄰的新鮮橘子都會腐爛。返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 1。分析 先找到所有的腐爛橘子...