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

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

相关推荐
嘉友20 分钟前
Redis zset数据结构以及时间复杂度总结(源码)
数据结构·数据库·redis·后端
苏三说技术1 小时前
Excel百万数据如何快速导入?
后端
昵称为空C1 小时前
SpringBoot编码技巧-ScheduledExecutorService轮询
java·spring boot·后端
huangyingying20252 小时前
03-分支结构
后端
00后程序员2 小时前
【Flutter -- 基础组件】Flutter 导航栏
后端
bobz9652 小时前
ovs internal port 对比 veth-pair 性能
后端
Auroral1562 小时前
基于RabbitMQ的异步通知系统设计与实现
前端·后端
易元2 小时前
设计模式-代理模式
java·后端
嘻嘻哈哈开森2 小时前
Java开发工程师转AI工程师
人工智能·后端
LTPP2 小时前
自动化 Rust 开发的革命性工具:lombok-macros
前端·后端·github