給定乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。
示例 1:
輸入:示例 2:輸出: 1
輸入:輸出: 3
public
intnumislands
(char
grid)
int count =0;
for(
int i =
0; i < grid.length; i++)}
}return count;
}public
void
infect
(char
grid,
int row,
int i,
int col,
int j)
grid[i]
[j]=
'2';
infect
(grid, row, i +
1, col, j)
;infect
(grid, row, i -
1, col, j)
;infect
(grid, row, i, col, j +1)
;infect
(grid, row, i, col, j -1)
;}
200 島嶼數量(並查集 DFS)
200.島嶼數量 方法一 dfs或bfs 遍搜尋遍改變,訪問陣列也不需要 class solution,int r int c public intnumislands char grid return res public void dfs int i,int j,char grid return...
並查集 島嶼數量
解答參考 島嶼數量官方解答 問題描述 給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向和 或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 grid 1 1 1 1 0 1 1 0 1 ...
力扣305,島嶼數量,並查集。
島嶼數量 ii 主要的想法是用並查集,改一下並查集的 就好了。假設每個相鄰的兩個格仔之間有條邊。整體的 感覺還能再優化些。首先將建個m n長的陣列parent,表示每個格仔,m n長的陣列rankx用於路徑壓縮。尋根的函式若parent i i那麼就代表這個i位置就是乙個根節點。find root函...