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;
    } 
}

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

相关推荐
问道飞鱼10 小时前
【Rust编程语言】Rust数据类型全面解析
开发语言·后端·rust·数据类型
泉城老铁11 小时前
目前开源架构需要注意的安全问题
spring boot·后端
ZoeGranger11 小时前
【Spring】IoC 控制反转、DI 依赖注入、配置文件和bean的作用域
后端
马卡巴卡11 小时前
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
后端
superman超哥11 小时前
仓颉动态特性探索:反射API的原理、实战与性能权衡
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉动态特性·反射api
骑着bug的coder11 小时前
第7讲:索引(下)——失效场景与优化实战
后端·mysql
superman超哥11 小时前
仓颉元编程之魂:宏系统的设计哲学与深度实践
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉语言特性
一 乐11 小时前
健身房预约|基于springboot + vue健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·小程序
踏浪无痕12 小时前
JobFlow:时间轮与滑动窗口的实战优化
后端·架构·开源
molaifeng12 小时前
像搭积木一样理解 Golang AST
开发语言·后端·golang