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

LeetCode 热题 HOT 100 (011/100)【宇宙最简单版】

【图论】No. 0200 岛屿数量 【中等】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【力扣详解】谢谢你的支持!

题目描述:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

  • 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
    此外,你可以假设该网格的四条边均被水包围。
  • 示例:图示二维网格中岛屿数量为 3

🔥 思路:利用 infect 操作,延展当前遍历到的岛屿块 "1",计数有几大块 infect 区域作为结果

  • 对于遍历到的水块 "0",不执行 infect 操作,跳过 (即继续寻找下一个待执行 infect 操作的岛屿块 `“1”)
  • 对于被 infect 操作延展遍历过的岛屿块 "1",更改为已处理块 "2",避免重复操作

参考如上思路,给出详细步骤如下:

  • 步骤一⭐编写 infect 操作代码
    • 确认 infect 条件:当前小块 (i, j) 1) 在地图区域内 2) 为岛屿块 "1"
    • 当前小块更改为已处理块 "2"
    • 迭代处理其邻居 (下、上、右、左) 小块
  • 步骤二⭐写出二维网格遍历框架,逐个处理每个小块
  • 步骤三⭐遍历时,每遇到一个待执行 infect 操作的岛屿块 "1",结果计数 +1
    • 利用 infect 操作,延展当前遍历到的岛屿块 "1" 会得到新的一大块岛屿
class Solution:def numIslands(self, grid: List[List[str]]) -> int:w, l = len(grid), len(grid[0])def infect(i, j):  # ------------------------ step 1# ------------------------------------- step 1.1if i < 0 or i >= w or j < 0 or j >= l or not grid[i][j] == "1": returngrid[i][j] = "2"  # ------------------- step 1.2# ------------------------------------- step 1.3infect(i-1, j)infect(i+1, j)infect(i, j+1) infect(i, j-1)result = 0# ------------------------------------------ step 2for i in range(w):  for j in range(l):if grid[i][j] == "1":infect(i, j)result +=1  # ------------------ step 3return result       

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 代码随想录算法训练营DAY64|拓扑排序、dijkstra(朴素版)
  • 基因组挖掘指导天然药物分子的发现-文献精读34
  • MongoDB教程(十五):MongoDB原子操作
  • 【系列专题】新质生产力之光,照亮“制造强国”之路
  • 【SpringBoot】URL映射之consumes和produces匹配、params和header匹配
  • go-kratos 学习笔记(1) 安装
  • 【数据结构】树和二叉树
  • InternLM学习笔记
  • 图解RocketMQ之消息模型详解(1)
  • Java程序中常见问题
  • Linux源码阅读笔记14-IO体系结构与访问设备
  • LC61----1374. 生成每种字符都是奇数个的字符串(字符串)---java版
  • C++树(二)【直径,中心】
  • 初识dockerFile之RUN和WORKDIR
  • 在 VM 虚拟机中安装 openEuler + 桌面
  • [Vue CLI 3] 配置解析之 css.extract
  • Android单元测试 - 几个重要问题
  • android图片蒙层
  • HTTP--网络协议分层,http历史(二)
  • JavaScript学习总结——原型
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Redis字符串类型内部编码剖析
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SOFAMosn配置模型
  • SQLServer之创建显式事务
  • vue 配置sass、scss全局变量
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • Zsh 开发指南(第十四篇 文件读写)
  • 批量截取pdf文件
  • 七牛云假注销小指南
  • 删除表内多余的重复数据
  • 深入浅出webpack学习(1)--核心概念
  • 在Unity中实现一个简单的消息管理器
  • 《天龙八部3D》Unity技术方案揭秘
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #pragma once与条件编译
  • (33)STM32——485实验笔记
  • (39)STM32——FLASH闪存
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (区间dp) (经典例题) 石子合并
  • (五)activiti-modeler 编辑器初步优化
  • (转)视频码率,帧率和分辨率的联系与区别
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • *2 echo、printf、mkdir命令的应用
  • .ai域名是什么后缀?
  • .net core + vue 搭建前后端分离的框架
  • .net wcf memory gates checking failed
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型