Leetcode--695. 岛屿的最大面积
问题分析:岛屿是由1组成的连通区域。四个边缘都被水包围意味着,岛屿只能在矩阵内部,周围都是0。 算法选择:使用DFS遍历每个1,计算其所在岛屿的面积。每次遇到1时,开始DFS,将四个方向的1标记为0,并计数总数。 优化技巧:在访问过的1处标记为0,避免重复计算,节省空间和时间。 初始化检查:如果 遍历矩阵:双重循环遍历每个单元格,当遇到1时,调用DFS。 DFS函数:检查边界条件,如果越界或是0,返回0。将当前单元格标记为0,递归四个方向,累加面积。 计算最大面积:每次DFS返回面积,比较并更新最大值,最后返回最大面积。
发布日期:2021-04-30 21:03:32
浏览次数:100
分类:精选文章
本文共 1363 字,大约阅读时间需要 4 分钟。
寻找二维数组中的最大岛屿面积问题可以通过深度优先搜索(DFS)解决。以下是问题的详细分析和解决方案:
问题分析
给定一个包含0和1的非空二维数组grid,一个岛屿由四个方向(水平或垂直)的1组成。矩阵的四个边缘都被水包围。任务是找到最大的岛屿面积。
方法思路
解决代码
class Solution { public int maxAreaOfIsland(int[][] grid) { if (grid.length == 0) { return 0; } int maxArea = 0; int rows = grid.length; int cols = grid[0].length; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (grid[i][j] == 1) { maxArea = Math.max(maxArea, dfs(grid, i, j)); } } } return maxArea; } private int dfs(int[][] grid, int row, int col) { if (row < 0 || row >= grid.length || col < 0 || col >= grid[0].length || grid[row][col] == 0) { return 0; } grid[row][col] = 0; int area = 1; area += dfs(grid, row - 1, col); area += dfs(grid, row + 1, col); area += dfs(grid, row, col - 1); area += dfs(grid, row, col + 1); return area; }} 代码解释
grid为空,返回0。这种方法确保了每个1只被访问一次,时间复杂度为O(n*m),适用于矩阵大小不超过50x50的情况。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2026年05月29日 11时49分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
R-CNN算法优化策略
2023-03-01
PHP规范PSR0和PSR4的理解
2023-03-01
php解析ipa包,获取logo
2023-03-01
R&Rstudio安装各种包
2023-03-02
php设置cookie,在js中如何获取
2023-03-02
php设置socket超时时间
2023-03-02
php设计模式 萨莱 pdf,PHP设计模式 建造者模式
2023-03-02
PHP设计模式之----观察者模式
2023-03-02
php设计模式之装饰器模式
2023-03-02
R&Python Data Science系列:数据处理(5)--字符串函数基于R(一)
2023-03-02
PHP设计模式:观察者模式
2023-03-02
php访问mysql(1)
2023-03-02
php详细学习1
2023-03-02
php语言优劣
2023-03-02
PHP语言最优雅的支付SDK扩展包
2023-03-02
PHP请求https域名发生segment fault段错误
2023-03-02
PHP读写XML文件
2023-03-02
PHP读写XML文件
2023-03-02
R&Python Data Science 系列:数据处理(3)
2023-03-02
php读取xml 数据库字段超长处理
2023-03-02