題目:
給你乙個由 '1'(陸地)和 '0'(水)組成的的二維網格,請你計算網格中島嶼的數量。
島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。
此外,你可以假設該網格的四條邊均被水包圍。
示例:
輸入:11110
11010
11000
00000輸出: 1
分析:
這個題和之前那個求最大島嶼面積的做法是一樣的,只不過求的是所有島嶼的數量。其實就是求給的二維網格圖中,連通分量的總數,那麼我們就依次遍歷二維陣列中的每乙個點,凡是值為1且未被訪問過的點,都進行依次深度優先遍歷,求出這個點對應的連通分量,然後將這個分量中的點都設定為已被訪問,然後島嶼數量加一,繼續進行遍歷。直到所有的點都遍歷完全,最後就可以求出總的島嶼數量。
**:
publicint numislands(char
grid)
int row =grid.length;
int col = grid[0].length;
boolean isvisited = new
boolean
[row][col];
int island = 0;
for (int i = 0; i < row; i++) }}
}return
island;
}private
int dirs = ,,,};
private
int findland(char grid,int r,int c,boolean
isvisited)
isvisited[r][c] = true
;
int island = 1;
for (int
dir : dirs)
return
island;
}
leetcode 第200題 島嶼數量
題目 給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 11000 0010...
力扣 200 島嶼數量
給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向和 或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。解題思路 dfs函式的作用 找到包含grid i j 格仔的島嶼的全部格仔,並將其全部置為 2 已訪...
力扣 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...