当前位置: 首页 > article >正文

Leetcode 695 Max Area of Island

题意

给定一个二维矩阵,矩阵中包含0和1,所有相连的1被视为一个岛屿,求这些所有岛屿的最大区域是多少

题目链接

https://leetcode.com/problems/max-area-of-island/description/

题解

遍历二维矩阵,当遇到没有被访问过的1时,开始进行dfs,记此时的1坐标为x,y。 dfs返回从(x,y)出发,能到达的所有岛屿格的数量。

class Solution {
public:
    int m;
    int n;

    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int res = 0;
        m = grid.size();
        n = grid[0].size();
        vector<vector<bool>> vis(m, vector<bool>(n, false));
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(grid[i][j] == 1 && !vis[i][j]) {
                    res = max(res, dfs(grid, vis, i, j));
                }
            }
        }
        return res;
    }
    
    int dfs(vector<vector<int>>& grid, vector<vector<bool>>& vis, int x, int y) {
        vis[x][y] = true;
        int dk[] = {-1, 0, 1, 0, -1};
        int area = 1;
        for(int i = 0; i < 4; i++) {
            int nx = x + dk[i];
            int ny = y + dk[i+1];
            if(nx >= 0 && nx < m && ny >= 0 && ny < n && !vis[nx][ny] && grid[nx][ny] == 1) {
                area += dfs(grid, vis, nx, ny);
            }
        }
        return area;
    }
};

时间复杂度: O ( m n ) O(mn) O(mn) m,n是二维矩阵的长宽
空间复杂度: O ( m n ) O(mn) O(mn) m,n是二维矩阵的长宽

疑问

为什么area += dfs(grid, vis, nx, ny);, 而不是return 1+dfs(grid, vis, nx, ny),你需要统计4个方向的答案再返回


http://www.kler.cn/a/452159.html

相关文章:

  • Java预加载
  • 【Nginx系列】---Nginx配置tcp转发
  • 使用Python开发高级游戏:实现一个3D射击游戏
  • 【解决报错】AttributeError: ‘NoneType‘ object has no attribute ‘group‘
  • 代码随想录Day37 动态规划:完全背包理论基础,518.零钱兑换II,本周小结动态规划,377. 组合总和 Ⅳ,70. 爬楼梯(进阶版)。
  • 全面掌握 AutoGluon:从入门到生产环境的实践指南
  • Logback日志框架中的继承机制详解
  • 学习postman工具使用
  • 头歌-机器学习在 NLP 中的实战
  • Github 2024-12-25C开源项目日报 Top8
  • HTTP 协议、AJAX - 异步网络请求及跨域、同源策略
  • LabVIEW软件项目设计方案如何制定
  • 构建专属AI知识库:Obsidian Copilot + 硅基流动SiliconCloud API 实战指南
  • 汽车消费新旺季到来,联众优车年末冲刺把好服务关
  • 静态断言(Static Assertions)在 C++ 中的使用
  • PHP爬虫类的并发与多线程处理技巧
  • Sublime 安装 View in Browser 插件后,点击无反应的解决方法
  • linux命令中cp命令-rf与-a的差别
  • HTTP/2与HTTP1.X的对比及升级指南
  • win11+matlab2021a配置C-COT
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战训练三)
  • MySQL HA 方案 MMM、MHA、MGR、PXC 对比
  • Hive SQL 窗口函数 `ROW_NUMBER() ` 案例分析
  • PCA降维MATLAB代码解释及应用场景
  • 如何在 Ubuntu 22.04 上安装和使用 Composer
  • 《解锁分类神经网络预训练模型的奇妙世界》