200 島嶼數量(並查集 DFS)

2021-10-03 02:45:09 字數 1235 閱讀 9588

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...