力扣 200 島嶼數量

2021-10-19 14:15:57 字數 893 閱讀 1770

給你乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,請你計算網格中島嶼的數量。

島嶼總是被水包圍,並且每座島嶼只能由水平方向和/或豎直方向上相鄰的陸地連線形成。

此外,你可以假設該網格的四條邊均被水包圍。

解題思路:

dfs函式的作用:找到包含grid[i][j]格仔的島嶼的全部格仔,並將其全部置為』2』(已訪問狀態)。

注意點:

1.將訪問過的網格設定為『2』 而不是 『0』,因為設定為0會導致無法區分是訪問過的陸地還是海洋。

2.可以將dfs模擬於遞迴法遍歷二叉樹。

(1)遞迴的退出條件:1)如果出界 2)如果該網格已經訪問過(模擬二叉樹:判斷是否節點為空)

(2)遞迴的引數,網格以及當前位置(模擬二叉樹:當前根節點)

(3)遞迴的單層邏輯:開始遞迴訪問其上下左右節點(遞迴遍歷左右子樹)

class

solution}}

return cnt;

}void

dfs(vectorchar

>>

& grid,

int r,

int c)

}int

ingrid

(vectorchar

>>

& grid,

int r,

int c)

};

當我再看第一遍的題解,我已經看不懂了:

class

solution

public

:int

numislands

(vectorchar

>>

& grid)}}

return res;}}

;

力扣 200 島嶼數量(js)

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 輸出 1...

力扣 200 島嶼的數量

傳送門 題目分析 對於只含有0和1的二維網路,題目實際上問的是二維網路中連通著的 1 的塊數 這裡的連通只能是上下左右連通 那麼,我們可以遍歷二維網路,對於陸地 由 1 構成 搜尋與其向連的 1 陸地 numisland 加一,當搜尋完一塊兒陸地 連著的 1 後,一定將他們變為 0 避免重複。基於上...

力扣Leetcode 200 島嶼數量

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向和 或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。輸入 11110 11010 11000 00000 輸出 1輸入 11000 11000 0010...