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;}
}
方法
二、並查集
海洋一定是連線在一起的,所以初始化的時候全部為0,其餘陸地初始化為自身標號,搜尋時連線。
官解
class
solution
rank[i * n + j]=0
;}}}
public
intfind
(int i)
public
void
union
(int x,
int y)
else
if(rank[rootx]
< rank[rooty]
)else
--count;}}
public
intgetcount()
}public
intnumislands
(char
grid)
int nr = grid.length;
int nc = grid[0]
.length;
unionfind uf =
newunionfind
(grid)
;for
(int r =
0; r < nr;
++r)
if(r +
1< nr && grid[r +1]
[c]==
'1')
if(c -
1>=
0&& grid[r]
[c -1]
=='1')if
(c +
1< nc && grid[r]
[c +1]
=='1')}
}}return uf.
getcount()
;}}
200島嶼數量 並查集未寫
給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 輸出 1 示例 2 輸入 輸出 3 public intnumislands char grid int cou...
並查集 島嶼數量
解答參考 島嶼數量官方解答 問題描述 給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向和 或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 grid 1 1 1 1 0 1 1 0 1 ...
島嶼數量 200 DFS
題目 給定 1 s 土地 和 0 s 水 的2d網格圖,計算島嶼的數量。島被水包圍,通過水平或垂直連線相鄰的土地而形成。您可以假設網格的所有四個邊都被水包圍。分析 截至條件 如何判定這是乙個島嶼grid i 1 j 0 grid i j 1 0的時候 確定這是乙個島嶼,此時在儲存島嶼數量的變數上加1...