当前位置: 首页 > 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更明了,第二眼其实两种思路都很明了,执行效率也是不相上下。

相关文章:

  • 策略模式与责任链模式学习笔记:从入门到理解
  • 如何选择自动化编程平台
  • 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请求获取全国捞王锅物料理门店位置信息
  • 网站建设与动态网页设计/临沂做网站的公司
  • 网站如何静态化/专业网站推广引流
  • 高端品牌鞋子有哪些/搜索引擎优化的英文
  • 电子商务网站建设思维导图/社交网络的推广方法
  • 做网站推广邢台/湖州seo排名
  • 网站多级导航效果/网站页面设计