200 島嶼數量

2022-01-19 08:23:37 字數 1024 閱讀 2793

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

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

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

示例 1:

輸入:[

['1','1','1','1','0'],

['1','1','0','1','0'],

['1','1','0','0','0'],

['0','0','0','0','0']

]輸出: 1

示例 2:

輸入:[

['1','1','0','0','0'],

['1','1','0','0','0'],

['0','0','1','0','0'],

['0','0','0','1','1']

]輸出: 3

解釋: 每座島嶼只能由水平和/或豎直方向上相鄰的陸地連線而成。

class

solution

grid[r][c] = '0';

dfs(grid, r - 1, c);

dfs(grid, r + 1, c);

dfs(grid, r, c - 1);

dfs(grid, r, c + 1);

}public

int numislands(char

grid)

int nr =grid.length;

int nc = grid[0].length;

int num_islands = 0;

for(int r = 0; r < nr; ++r)}}

return

num_islands;

}}

題解:下軍旗,把這四個想成工兵去排雷,把0比喻為安全地帶,1比喻為地雷.

工兵們可以按軍旗的規則去排雷,當發現第乙個雷的時候,四個士兵分別向東西南北方向進發,直到發現安全地帶,就在每乙個有雷的地方在生成四個工兵,繼續排雷,不可以間隔安全地帶去別的地方。

200 島嶼數量

複雜度分析 時間複雜度 o m n 其中 m 和 n 分別為行數和列數。空間複雜度 最壞情況下為 o m n 此時整個網格均為陸地,深度優先搜尋的深度達到m n。class solution int numislands vector grid int cnt 0 for int i 0 i gri...

200 島嶼數量

leetcode 200.島嶼數量 島嶼另一種型別 求周長 leetcoed 463.島嶼的周長 廣度優先遍歷 bfs 深度優先遍歷 dfs 2.1 dfs 就是遇到乙個 1 遞迴下去繼續找 1 四周沒有 1 之後,逐層返回到上一層找四周剩餘的 1 本題不需要回溯 直接把 訪問過的標記即可 廣度優先...

200 島嶼數量

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