給乙個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...