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

力扣刷题Day 56:岛屿数量(200)

1.题目描述

2.思路

Krahets佬的DFS / BFS思路如下:

方法1(DFS):遍历整个矩阵,遇到grid[i][j] == "1"时以DFS的方法向上下左右搜索相邻陆地,最重要的一点是把走过所有陆地的结点都置0以避免后续重复搜索。

方法2(BFS):遍历整个矩阵,遇到grid[i][j] == "1"时以BFS的方法将上下左右的陆地置0。

3.代码(Python3)

方法1:

class Solution:def numIslands(self, grid: List[List[str]]) -> int:def dfs(grid, i, j):if not 0 <= i < row or not 0 <= j < col or grid[i][j] == "0": returngrid[i][j] = "0"dfs(grid, i - 1, j)dfs(grid, i + 1, j)dfs(grid, i, j - 1)dfs(grid, i, j + 1)count, row, col = 0, len(grid), len(grid[0])for i in range(row):for j in range(col):if grid[i][j] == "1":dfs(grid, i, j)count += 1return count

方法2:

class Solution:def numIslands(self, grid: List[List[str]]) -> int:def bfs(grid, i, j):queue = [[i, j]]while queue:[i, j] = queue.pop(0)if 0 <= i < row and 0 <= j < col and grid[i][j] == "1":grid[i][j] = "0"queue += [[i - 1, j], [i + 1, j], [i, j - 1], [i, j + 1]]count, row, col = 0, len(grid), len(grid[0])for i in range(row):for j in range(col):if grid[i][j] == "1":bfs(grid, i, j)count += 1return count

4.执行情况

方法1:

方法2:

5.感想

有史以来做过的第一道图论算法题,完全没有头绪,只能看题解了,看完题解又感觉很简单,以后遇到这种题应该会做了吧。

第一眼感觉DFS比BFS更明了,第二眼其实两种思路都很明了,执行效率也是不相上下。

http://www.xdnf.cn/news/652069.html

相关文章:

  • 多线程(5)——单例模式,阻塞队列
  • C++多态与虚函数
  • UR10e 机器人如何通过扭矩控制接口实现高效装配
  • window 显示驱动开发-呈现开销改进
  • 如何在 Django 中集成 MCP Server
  • Leetcode 3556. Sum of Largest Prime Substrings
  • TPAMI 2025 | CEM:使用因果效应图解释底层视觉模型
  • Hive 分区详解:从基础概念到实战应用
  • R 语言科研绘图 --- 热力图-汇总
  • Linux系统:动静态库的制作与安装
  • ollama list模型列表获取 接口代码
  • Python环境搭建
  • 220Vac 1kW 无刷直流电机驱动器硬件方案
  • Spring AI 之多模态
  • [BUG]Debian/Linux操作系统中 安装 curl等软件显示无候选安装(E: 软件包 curl 没有可安装候选)
  • 国芯思辰| SerDes芯片SCS5501/SCS5502助力汽车触屏流媒体后视镜,兼容MAX9295A/MAX96717
  • Oracle 的 TX、TM、UL 锁对比
  • 【后端高阶面经:MongoDB篇】40、怎么优化MongoDB的查询性能?
  • 001 dart刷题
  • QT6.9中opencv引用路径的其中一种设置
  • AlphaCore GPU 物理仿真引擎内测邀请
  • crc32代码设计
  • .NET 8使用AOT发布ASP.NET Core应用
  • 《软件工程》第 7 章 - 软件体系结构设计
  • Wan2.1 图生视频 多卡推理批量生成视频
  • 在Windows上,将 Ubuntu WSL 安装并迁移到 D 盘完整教程(含 Appx 安装与迁移导入)
  • Cocos Creator 之 Label的实际宽高改变文本背景大小及常用方法
  • 【Volumetric Heatmap热力图插件的使用】
  • SpringBoot性能优化的12招
  • Flutter Container组件、Text组件详解