DFS和BFS求解島嶼數量

2021-10-21 03:05:17 字數 868 閱讀 9644

給乙個01矩陣,1代表是陸地,0代表海洋, 如果兩個1相鄰,那麼這兩個1屬於同乙個島。我們只考慮上下左右為相鄰。

島嶼: 相鄰陸地可以組成乙個島嶼(相鄰:上下左右) 判斷島嶼個數。

示例1輸入

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

返回值3

備註:01矩陣範圍<=200*200

先遍歷所有節點找到節點值為1的,然後將當前節點的座標傳遞給dfs或者bfs

void

backtrace

(vectorchar

>>

& grid,

int m,

int n,

int x ,

int y)

intsolve

(vectorchar

>

>

& grid)}}

return result;

}

利用乙個佇列儲存當前的座標,然後遍歷它的上下左右四個方向是否時1,是則將其加入佇列,刪除當前的座標,並將其值該為2,直到隊列為空則說明當前的島嶼找到

int dx[4]

=;int dy[4]

=;void

bfs(vectorint>

>

& grid,

int m,

int n,

int x,

int y)}}

intsolve

(vectorint>

>

& grid)}}

return result;

}

leetcode DFS 島嶼數量 樸素DFS

看傳送門裡的思路好了,這裡大體一致,只不過選擇了dfs作為解法而已。dfs的解法和bfs基本上一模一樣,只不過使用了stack作為資料結構。當然你可以編寫更簡單的遞迴形式,利用os的call stack,不過那樣做的缺點就是容易堆疊溢位。includeusing namespace std vect...

島嶼數量 200 DFS

題目 給定 1 s 土地 和 0 s 水 的2d網格圖,計算島嶼的數量。島被水包圍,通過水平或垂直連線相鄰的土地而形成。您可以假設網格的所有四個邊都被水包圍。分析 截至條件 如何判定這是乙個島嶼grid i 1 j 0 grid i j 1 0的時候 確定這是乙個島嶼,此時在儲存島嶼數量的變數上加1...

leetcode 200 島嶼數量(dfs)

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。ac c class solution dy 4 方向陣列 for int k 0 k 3 k return true 返回true表示搜到一塊陸地 intnumislands vectorchar grid return...