Description
Given an m x n 2D binary grid grid which represents a map of ‘1’s (land) and ‘0’s (water), return the number of islands.
An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
1 | Example 1: |
Solution
以下使用深度優先搜尋演算法(DFS),解決網格搜尋問題。
遞迴實作的 DFS 版本
1 | from typing import List |
優點:
- 實作簡單:遞迴方法直觀且容易理解,直接將問題分解成多個子問題。
- 代碼量少:遞迴方法通常較為簡潔,不需要額外的資料結構。
缺點:
- 堆疊溢出風險:對於非常大的輸入資料,遞迴深度可能會很大,導致堆疊溢出。
- 效率問題:在某些情況下,遞迴調用開銷可能比顯式堆疊高,特別是當遞迴深度很大時。
顯式堆疊實作的 DFS 版本
1 | from typing import List |
優點:
- 避免堆疊溢出:使用顯式堆疊模擬遞迴調用,可以有效避免堆疊溢出風險,適合處理大量資料。
- 更靈活:可以更靈活地控制迭代過程,比如在某些情況下可以優化堆疊操作。
缺點:
- 程式碼較複雜:需要手動維護堆疊,程式碼相對於遞迴版本來說略顯複雜。
- 空間開銷:顯式堆疊在某些情況下可能會消耗更多的空間。