当前位置: 首页 > 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.dtcms.com/a/213897.html

相关文章:

  • 策略模式与责任链模式学习笔记:从入门到理解
  • 如何选择自动化编程平台
  • OpenSSL 签名验证详解:PKCS7* p7、cafile 与 RSA 验签实现
  • 【windwos】文本编辑器Notepad++ 替代品Notepad--
  • 支持向量机(SVM)例题
  • 综合实现案例 LVS keepalived mysql 等
  • 深入解析Spring Boot与Redis集成:高效缓存与性能优化实践
  • 《软件工程》第 3 章 -需求工程概论
  • vae 视频截图 复习 gans和vae的原理区别
  • 【通用智能体】Dify API 文件上传功能: 两种传参方式的API传参方式
  • 【Pandas】pandas DataFrame add_prefix
  • window 显示驱动开发-呈现开销改进
  • 系统分析师备考总结
  • Ubuntu从0到1搭建监控平台:本地部署到公网访问实战教程Cpolar穿透与Docker部署全过程
  • 加密货币犯罪的涉案金额如何计算?
  • 使用 `.inl` 文件和 `#pragma once` 解决模板函数头文件膨胀问题指南
  • 网络编程学习笔记——TCP网络编程
  • window 显示驱动开发-视频内存的直接交替(二)
  • [TriCore] 01.QEMU 虚拟化 TriCore 架构中的寄存器 指令
  • HTML应用指南:利用GET请求获取全国捞王锅物料理门店位置信息
  • 快速了解 GO之 Defer 延迟操作
  • 拥塞控制算法cubic 和bbr
  • HTML流星雨
  • golang channel 的特点、原理及使用场景
  • 进行性核上性麻痹护理之道:助力患者舒适生活
  • (11)Service Mesh架构下Java应用实现零信任安全模型
  • Pycatia基础代码解析——零件设计篇(一)
  • 数字展厅建设需融合创意设计与实用功能,打造多维用户体验!
  • Unity性能优化
  • ClickHouse性能优化技术深度解析与实践指南