岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积
生活随笔
收集整理的這篇文章主要介紹了
岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
思路參考上文:
島嶼類-網格類問題-DFS | 力扣200. 島嶼數量
- 本文講解695. 島嶼的最大面積問題,屬于常見的島嶼類-網格類問題
- 本題使用DFS的思想
題目
給定一個包含了一些 0 和 1 的非空二維數組 grid
一個 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合,這里的「相鄰」要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0(代表水)包圍著
找到給定的二維數組中最大的島嶼面積。(如果沒有島嶼,則返回面積為 0 )
示例
思路分析
思路參考上文:
島嶼類-網格類問題-DFS | 力扣200. 島嶼數量
代碼
class Solution { public:int maxAreaOfIsland(vector<vector<int>>& grid) {int res = 0;for (int r = 0; r < grid.size(); r++) {for (int c = 0; c < grid[0].size(); c++) {if (grid[r][c] == 1) {int a = inArea(grid, r, c);res = res > a ? res : a;}}}return res;}int inArea(vector<vector<int>>& grid,int line,int row) {if (!Island(grid,line,row)) {return 0;}if (grid[line][row] != 1) {return 0;}grid[line][row] = 2; // 代表訪問過return 1 // 一個 1 ;代表 1 面積+ inArea(grid, line - 1, row)+ inArea(grid, line + 1, row)+ inArea(grid, line, row - 1)+ inArea(grid, line, row + 1);}bool Island(vector<vector<int>>& grid,int line,int row) {return 0 <= line && line < grid.size() && 0 <= row && row < grid[0].size();} };結果
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的岛屿类-网格类问题-DFS | 力扣695. 岛屿的最大面积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 岛屿类-网格类问题-DFS | 力扣20
- 下一篇: 力扣【接雨水问题】 leetcode-4