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

leetcode 695 岛屿的最大面积

一、问题描述

二、解题思路

整体思路

(1)可以采用深度优先搜索+全局变量的方法来解决这个问题。本题的实质是求所有连通块的最大面积,可以在leetcode 200 岛屿数量-CSDN博客的基础上加一个全局变量area,记录当前连通块的面积;

(2)遍历grid数组,如果grid[i][j]==1且visited[i][j]==false,调用dfs函数,将(i,j)所在连通块的所有位置都着色,并统计该连通块的面积,然后执行ret=max(ret,area),最后将area赋值为0。遍历完grid数组后,ret的值即为“岛屿”的最大面积。

具体思路

(1)函数功能:dfs函数将(i,j)所在的连通块全部着色(visited[i][j]赋值为true),并更新area,统计当前连通块的面积;

(2)函数体

<1>首先,visited[i][j]=true,并将area++;

<2>按照上、右、下、左的顺序从(i,j)位置开始探索,如果(x,y)未越界且未被访问且grid[x][y]==1,就对(x,y)递归调用dfs函数;

三、代码实现

class Solution {int m,n;vector<vector<bool>> visited;int area=0;
public:int maxAreaOfIsland(vector<vector<int>>& grid) {//初始化全局变量m=grid.size();n=grid[0].size();visited.resize(m,vector<bool>(n,false));int ret=area;for(int i=0;i!=m;i++)for(int j=0;j!=n;j++){if(grid[i][j]&&!visited[i][j]){dfs(grid,i,j);ret=max(ret,area);area=0;}}return ret;}int dx[4]={0,1,0,-1};int dy[4]={1,0,-1,0};void dfs(vector<vector<int>>& grid,int i,int j){visited[i][j]=true;area++;for(int k=0;k!=4;k++){int x=i+dx[k];int y=j+dy[k];if(x>=0&&x<m&&y>=0&&y<n&&grid[x][y]&&!visited[x][y])dfs(grid,x,y);}}
};

http://www.dtcms.com/a/450024.html

相关文章:

  • LLaVA-NeXT-Interleave论文阅读
  • 邢台企业网站制作公司中建国际建设有限公司网站
  • 长春火车站防疫要求做网站都要用到框架吗
  • 集合进阶 - HashMap 篇
  • 从原图到线图再到反推:网络图几何与拓扑的结合分析
  • Lua下载和安装教程(附安装包)
  • JAVA实验课程第五次作业分析与代码示例
  • 龙口网站制作公司深圳知名设计公司有哪些
  • 网站数据修改网页界面设计的起源
  • 东莞建设网站官网住房和城乡wordpress 如何修改like和dislike
  • Gopher二次编码原因解析
  • 【ARM汇编语言基础】-数据处理指令(七)
  • 汇编与反汇编
  • 福州建设网站shopee怎么注册开店
  • 建立网站站点的目的贵州二级站seo整站优化排名
  • 阳江做网站多少钱企业网站推广方法有哪些
  • sm2025 模拟赛11 (2025.10.5)
  • python镜像源配置
  • 4.寻找两个正序数组的中位数-二分查找
  • 理解CC++异步IO编程:Epoll入门
  • wordpress房屋网站模板微信小程序
  • 阿里网站建设视频教程WordPress云媒体库
  • SpringCloud 入门 - Nacos 配置中心
  • Windows 下使用 Claude Code CLI 启动 Kimi
  • 网站推广的基本方式抖音特效开放平台官网
  • 湖南网站排名wordpress插件seo
  • WindowsKyLin:nginx安装与配置
  • 【剑斩OFFER】算法的暴力美学——最大连续1的个数 III
  • UNIX下C语言编程与实践32-UNIX 僵死进程:成因、危害与检测方法
  • 论坛开源网站源码首页优化排名