力扣-200.岛屿数量

devtools/2024/10/19 13:20:07/

刷力扣热题–第二十四天:200.岛屿数量
新手第二十四天 奋战敲代码,持之以恒,见证成长

1.题目描述

在这里插入图片描述

2.题目解答

这道题刚开始想的确实想的绞尽脑汁的,看了相关解答才明白的,三种方法,这里想先用两种方法进行实现,一个深度优先,一个广度优先。深度优先就是从一个点遍历直至到底,再向上一层,一个一个遍历,广度优先就更类似于树的层序遍历,最后岛屿的个数就是搜索的次数。
(1)广度优先搜索
使用双端队列的方式第一次见,所以这里参考的是力扣官网的写法,自己还得再理解消化一下~
在这里插入图片描述

(2)深度优先搜索
深度优先目前位置还是不太会实现,等在理解理解,扎实一下算法
在这里插入图片描述

3.心得体会

(1)广度优先搜索

class Solution(object):def numIslands(self, grid):""":type grid: List[List[str]]:rtype: int"""if len(grid) == 0:return 0nums = 0for i in range(len(grid)):for j in range(len(grid[0])):if grid[i][j] == "1":nums += 1grid[i][j] = "0"neighbors = collections.deque([(i, j)])while neighbors:row, col = neighbors.popleft()for x, y in [(row - 1, col), (row + 1, col), (row, col - 1), (row, col + 1)]:if 0 <= x < len(grid) and 0 <= y < len(grid[0]) and grid[x][y] == "1":neighbors.append((x, y))grid[x][y] = "0"return nums

(2)深度优先搜索

class Solution(object):def numIslands(self, grid):""":type grid: List[List[str]]:rtype: int"""def dfs(grid, r, c):grid[r][c] = 0nr, nc = len(grid), len(grid[0])for x, y in [(r - 1, c), (r + 1, c), (r, c - 1), (r, c + 1)]:if 0 <= x < nr and 0 <= y < nc and grid[x][y] == "1":dfs(grid, x, y)if len(grid) == 0:return 0nums = 0for i in range(len(grid)):for j in range(len(grid[0])):if grid[i][j] == "1":nums += 1dfs(grid,i,j)return nums

4.做题时长

8月2日 16:45-17:30 终于,这件事情坚持了一个月了,最近一直在看奥运会,奥运精神极大的感染了我,每当五星红旗冉冉升起的时候,就会觉着自己走的每一步都是有意义的,青年一代的热血,未来必将会洒向祖国需要的地方!


http://www.ppmy.cn/devtools/90873.html

相关文章

图论:1203. 项目管理(以小组为单位进行拓扑排序)

文章目录 1.问题分析2.思路整理3.官解思路 LeetCode&#xff1a;1203. 项目管理 建议直接看思路整理 1.问题分析 仔细读题可以发现&#xff0c;如果不考虑小组项目彼此相邻&#xff0c;则项目之间的依赖关系就是一个拓扑排序。 但是如果要考虑小组项目彼此相邻&#xff0c;问…

Lettuce 客户端连接 Redis

背景&#xff1a;线上 Redis 偶尔发生执行命令超时的异常&#xff1a;Command timed out after 1 minute(s)&#xff0c;但是短时间又找不到具体原因&#xff0c;就想着把执行命令超时时间设置的短一点&#xff0c;查询 Redis 超时以后走 DB&#xff0c;临时解决一下问题&#…

【算法】贪心算法

应用场景——集合覆盖问题 假设存在下面需要付费的广播台&#xff0c;以及广播台信号可以覆盖的地区。如何选择最少的广播台&#xff0c;让所有的地区都可以接收到信号 贪心算法介绍 1.贪心算法是指在对问题进行求解时&#xff0c;在每一步选择中都采取最好或者最优的选择 2…

【Linux-WMware Tools安装失败“segmentation fault”解决方法】

VMware版本&#xff1a;17 Ubuntu版本: 22.04 安装常规办法&#xff0c;通过vmware安装Tool&#xff0c;安装显示报错&#xff1a;“segmentation fault”&#xff0c;查了下可能是tool和ubuntu版本不兼容导致的。解决办法&#xff1a;通过命令行逐次安装。 1、sudo apt insta…

前端使用 Konva 实现可视化设计器(19)- 连接线 - 直线、折线

本章响应小伙伴的反馈&#xff0c;除了算法自动画连接线&#xff08;仍需优化完善&#xff09;&#xff0c;实现了可以手动绘制直线、折线连接线功能。 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug&#xff0c;欢迎来提 Issue 哟~ github源码 gitee…

基于python的旅游可视化系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;原生小程序开发&#xff0c…

oracle库PASSWORD_VERSIONS 对应的加密方式

oracle库PASSWORD_VERSIONS 对应的加密方式 10G DES 11G SHA-1 12C SHA-2-based SHA-512官方文档&#xff1a; https://docs.oracle.com/database/121/DBSEG/authentication.htm#DBSEG487

捕鱼达人 高端游戏 休闲游戏

《捕鱼达人》是一款以深海狩猎为题材的休闲竞技游戏。2009年《捕鱼达人》上线&#xff0c;最初以简单轻松的捕鱼玩法获得了玩家的喜爱。 2015年的《捕鱼达人》还原了海洋深处的美丽场景&#xff0c;游戏画面以及击中大鱼时的特效音乐。 这是一场海底世界的远征&#xff0c;在这…