695 岛屿最大面积

题目

给你一个大小为 m x n 的二进制矩阵 grid

岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。

岛屿的面积是岛上值为 1 的单元格的数目。

计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0

示例 1:

css 复制代码
输入: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
输出: 6
解释: 答案不应该是 11 ,因为岛屿只能包含水平或垂直这四个方向上的 1

代码与解析

java 复制代码
class Solution {
    int ans = 0, n, m;
    public int maxAreaOfIsland(int[][] grid) {
        m = grid.length;
        n = grid[0].length;
        for(int i = 0;i < m;i ++) {
            for(int j = 0;j < n;j ++) {
                if(grid[i][j] == 1) {
                    ans = Math.max(dfs(grid, i, j), ans);
                }
            }
        }
        return ans;
    }
    public int dfs(int[][] grid, int x,int y){
        if(x < 0 || y < 0 || x >= m || y >= n || grid[x][y] == 0) return 0;
        grid[x][y] = 0;
        return dfs(grid, x+ 1, y) + dfs(grid, x - 1, y) +
            dfs(grid, x, y + 1) + dfs(grid, x, y - 1) + 1;
    } 
}

会了套路,岛屿题简直秒杀

相关推荐
Asthenia04127 分钟前
如何设计实现一个定时任务执行器 - SpringBoot环境下的最佳实践
后端
兔子的洋葱圈26 分钟前
【django】1-2 django项目的请求处理流程(详细)
后端·python·django
Asthenia041234 分钟前
如何为这条sql语句建立索引:select * from table where x = 1 and y < 1 order by z;
后端
ihgry36 分钟前
SpringBoot+Mybatis实现Mysql分表
后端
Asthenia041237 分钟前
令牌桶算法与惰性机制的应用
后端
lamdaxu40 分钟前
02Tomcat 线程模型详解&性能调优
后端
lamdaxu42 分钟前
03Tomcat类加载机制&热加载和热部署
后端
程序猿chen1 小时前
《JVM考古现场(十五):熵火燎原——从量子递归到热寂晶壁的代码涅槃》
java·jvm·git·后端·java-ee·区块链·量子计算
Asthenia04121 小时前
Pandas全面操作指南与电商销售数据分析
后端