leetcode DFS 島嶼數量 樸素DFS

2021-09-28 14:52:01 字數 609 閱讀 4439

看傳送門裡的思路好了,這裡大體一致,只不過選擇了dfs作為解法而已。

dfs的解法和bfs基本上一模一樣,只不過使用了stack作為資料結構。

當然你可以編寫更簡單的遞迴形式,利用os的call stack,不過那樣做的缺點就是容易堆疊溢位

#includeusing namespace std;

vector> getneighbor(pair&v, vector> &grid)

void dfs(int i, int j, vector> &grid) }}}

int numislands(vector>& grid)

int height = grid[0].size();

for (int i = 0; i < width; ++i)

}} return sum;

}int main()

grid.push_back(chs);

} cout << numislands(grid) << endl;

return 0;

}

沒有!我感覺我的搜尋能力越來越強了。

200 島嶼數量

複雜度分析 時間複雜度 o m n 其中 m 和 n 分別為行數和列數。空間複雜度 最壞情況下為 o m n 此時整個網格均為陸地,深度優先搜尋的深度達到m n。class solution int numislands vector grid int cnt 0 for int i 0 i gri...

200 島嶼數量

leetcode 200.島嶼數量 島嶼另一種型別 求周長 leetcoed 463.島嶼的周長 廣度優先遍歷 bfs 深度優先遍歷 dfs 2.1 dfs 就是遇到乙個 1 遞迴下去繼續找 1 四周沒有 1 之後,逐層返回到上一層找四周剩餘的 1 本題不需要回溯 直接把 訪問過的標記即可 廣度優先...

200 島嶼數量

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向和 或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 grid 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0...