leetcode695.岛屿的最大面积

news2024/9/20 22:57:11

题目描述

给你一个大小为 m x n 的二进制矩阵 grid 。
岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。
岛屿的面积是岛上值为 1 的单元格的数目。
计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。

示例 1:
在这里插入图片描述
输入: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 。

示例 2:
输入:grid = [[0,0,0,0,0,0,0,0]]
输出:0

解题思路

方法一:深度优先遍历

本题可以用深度优先搜索DFS求解。
我们找到一个单元格后,即找到一个岛屿。就再去其上下左右找下一个单元格,当找到单元格,再递归去找其上下左右,按此逻辑,就像拔地瓜藤一样,一下子把所有地瓜都拔出来。而这就是深度优先搜索,即dfs。
为了避免重复统计,我们将统计过的单元格位置的值从1变为0。
用ans统计每个岛屿包含的单元格个数,每找到一个岛屿包含的单元格个数大于当前岛屿,则更新ans。

int dfs(int** grid,int i,int j,int row,int col){
   
    if(i<0||j<0||i>=row||j>=col||grid[i][j]==0)
    return 0;
    grid[i][j]=0;
    return 1+dfs(grid,i-1,j,row,col)+dfs(grid,i+1,j,row,col)+dfs(grid,i,j-1,row,col)+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小阿轩yx-Docker 基本管理

小阿轩yx-Docker 基本管理 &#xff08;镜像制作与管理&#xff09; Docker 镜像管理 Docker 镜像除了是 Docker 的核心技术&#xff0c;也是应用发布的标准格式一个完整的 Docker 镜像可以支撑一个 Docker 容器的运行进入容器之后最常见的操作就是在容器中安装应用服务 Do…

Python绘图入门:使用Matplotlib绘制柱状图

Python绘图入门&#xff1a;使用Matplotlib绘制柱状图 柱状图是一种常见的数据可视化方式&#xff0c;能够直观地展示不同类别之间的数据差异。在Python中&#xff0c;Matplotlib是一个非常强大且灵活的绘图库&#xff0c;它不仅能绘制简单的图表&#xff0c;还能创建复杂的多…

importlib库介绍

importlib importlib 包的目的有两个。 一种是在 Python 源代码中提供 import 语句&#xff08;因此&#xff0c;通过扩展&#xff0c;import() 函数&#xff09;的实现。 这提供了 import 的实现&#xff0c;它可以移植到任何 Python 解释器。 这也提供了一种比 Python 以外…

【鸿蒙学习】使用HarmonyOS NEXT与Uniapp开发同一鸿蒙应用的区别及分析

随着鸿蒙操作系统的普及&#xff0c;开发者面临着多种开发工具的选择。本文将通过开发、部署、运行、使用四个方面&#xff0c;详细分析使用HarmonyOS NEXT与Uniapp开发同一鸿蒙应用的区别&#xff0c;为开发者提供参考。 一、引言 鸿蒙操作系统&#xff08;HarmonyOS&#xf…

拿到服务器做的事:自己写的最全的一个,方便后续使用

1、ssh密钥登录 1.1本机生成密钥 这里是windows的命令 1.2上传.pub文件到服务器端 服务器端的操作&#xff1a; 本机用记事本打开.pub文件&#xff0c;复制到服务器端 我这里是新建了一个hh文件&#xff0c;粘贴过去了 vim hh1.3密钥写入到密钥key文件中 cat hh >>…

【C语言初阶】C语言指针全攻略:解锁C语言深层奥秘的钥匙

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言操作符 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀指针 &#x1f4d2;1. 指针和指…

于博士Cadence视频教程学习笔记备忘

标签&#xff1a;PCB教程 PCB设计步骤 cadence教程 Allegro教程 以下是我学习该视频教程的笔记&#xff0c;记录下备忘&#xff0c;欢迎大家在此基础上完善&#xff0c;能回传我一份是最好了&#xff0c;先谢过。 备注&#xff1a; 1、未掌握即未进行操作 2、操作软件是15.…

【问题记录+总结】VS Code Tex Live 2024 Latex Workshop Springer模板----更新ing

目录 Summary 道阻且长 少即是多 兵马未动粮草先行 没有万能 和一劳永逸 具体问题具体分析 心态 Detail 1、关于模板[官网] 2、settings.json 3、虫和杀虫剂 4、擦 换成Tex Studio都好了。。。 Summary 道阻且长 某中意期刊&#xff0c;只有Latex。之前只简单用过…

VSCODE platformio ESP32-S3 内置 JTAG 接口断点单步调试笔记

ESP32 S3的两种JTAG调试方法 ESP32 S3的有两种JTAG调试方法&#xff0c;直接连接板子上的JTAG引脚进行调试&#xff0c;或者用ESP32-S3 内置 JTAG 接口进行调试&#xff0c;这些方法有助于开发者在开发过程中进行更深入的调试。 1、ESP32-S3 内置 JTAG 接口 使用 ESP32-S3 内…

第63期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

如何使用unittest和pytest进行python脚本的单元测试

1. 关于unittest和pytest unittest是python内置的支持单元测试的模块&#xff0c;他提供了核心类&#xff0c;TestCase&#xff0c;让单元测试 代码的编写不再是从0开始&#xff0c;不再是作坊式&#xff0c;而是标准化&#xff0c;模板化&#xff0c;工厂化。 pytest是第三方…

微软官方U盘制作工具重装Windows11系统教程

微软官方U盘制作工具重装Windows11系统教程 **注意&#xff1a;**在安装系统的过程中&#xff0c;有可能会因为操作失误造成硬盘原有数据丢失&#xff0c;建议大家要提前做好重要资料备份&#xff0c;避免出现无法挽回的损失。 ​ Windows 11 对于大部分用户而言是完全没有使用…

国产JS库(js-tool-big-box)7月度总结

js-tool-big-box开发已经有3个月了&#xff0c;团队内的小伙伴进行了热烈的讨论&#xff0c;持续做了功能迭代。小伙伴们也做了艰苦卓绝的文档分享&#xff0c;有纯功能分享类的&#xff0c;有带有小故事的&#xff0c;有朋友们利用自己独自网站分发分享的。7月份快要结束了&am…

【云原生】Pass容器研发基础——汇总篇

云原生基础汇总 系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了云计算学习的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;每个知识点的修正和深入主要参考各平台大佬的文章&#xff0c…

Backtrader 文档学习- 整体架构功能分析理解

Backtrader 文档学习- 架构功能分析理解 1. 概述 backtrader是一个用于开发和执行交易策略的Python框架。它提供了一套完整的工具和功能&#xff0c;使得用户可以方便地进行策略回测、实盘交易以及数据分析。 backtrader的入口为Cerebro类&#xff0c;该类将所有输入(Data F…

FPGA学习笔记-1 FPGA原理与开发流程

1 初识FPGA 文章目录 1 初识FPGA1.1 基本认知1.1.1 什么是FPGA&#xff1f;1.1.2 什么是HDL&#xff1f;什么是Verilog&#xff1f;1.1.3 硬件开发与软件开发1.1.4 FPGA与其他硬件的对比1.1.5 FPGA优势与局限性1.1.6 FPGA的应用1.1.7 FPGA的学习之路 1.2 FPGA开发流程1.2.1 一般…

【学习AI-相关路程-概念了解-基础概念-正负样本-模型-文件结尾-卷积-yolov8模型-概念学习】

【学习AI-相关路程-概念了解-基础概念-正负样本-模型-文件结尾-卷积-yolov8模型-概念学习】 1、前言2、了解正负样本1-定义2-正样本3-负样本4-举例 3、模型这个概念1- 模型的定义2- 模型的训练3- 模型的推理4- 模型的评估5- 模型的类型6- 常见的模型 4、以这样 .yaml 结尾文件是…

以太坊私有链 搭建及相关操作

文章目录 1、创建私有链1.1 创建配置文件1.2 初始化私有链1.3 启动私有链1.4 添加节点1.4.1 启动节点A1.4.2 启动节点B1.4.3 查看节点A信息1.4.4 节点B主动加入到节点A1.4.5 查看已连接的节点数1.4.6 查看其它节点信息2、以太坊挖矿相关操作2.1 查看账户2.2 创建账户2.3 查看账…

RUST实现远程操作电脑手机

简介&#xff1a; Rust Desk 是一个开源的远程桌面软件&#xff0c;能够完全替代向日葵和ToDesk的功能&#xff0c;包括电脑控制电脑、电脑控制手机、手机控制电脑等。它是完全免费的。 下载&#xff1a; 需要下载 Rust Desk 的服务端和客户端安装包。 安装&#xff1a; 服务…

PHP移动端商城分销全平台全端同步使用

&#x1f4f1;【掌中购物新纪元&#xff1a;探索移动端购物商城系统的无限魅力】&#x1f6cd;️ &#x1f680; 随时随地&#xff0c;购物自由新体验 在这个快节奏的时代&#xff0c;移动端购物商城系统彻底颠覆了传统购物方式&#xff0c;让消费者享受到了前所未有的便捷与…