代码随想录图论

1. 所有可能的路径

class Solution:def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:def dfs(graph, result, path, root):     #result 返回结果, path记录路径, root记录遍历到了第几个节点if root == len(graph) - 1:          #如果遍历到最后一个节点,记录结果并返回result.append(path.copy())      returnfor i in graph[root]:               #遍历每个节点下一个能到的下一个节点path.append(i)                  #path直接添加dfs(graph, result, path, i)     #dfs递归, 输入的root直接变成i,也就是当前遍历的下一个path.pop()                      #回溯result = []path = [0]                              #初始化的时候path里已经有最初始的节点位置root = 0                                #起始节点为0dfs(graph, result, path, root)return result

实际上就是回溯算法,区别在于:之前做的回溯的题目一般是列表里面一个一个元素遍历,所以在递归的时候有一个start_index变量,控制选与不选当前元素。

而dfs搜索找下一个节点的时候,不用一个个遍历graph中的节点,而是只需要遍历当前节点能到达的节点,因为如果当前节点都到不了的节点,就没有必要往后遍历了。

因此递归的dfs的输入就变成了当前遍历的节点i

2. 岛屿数量

广搜 bfs版本

class Solution:def __init__(self):self.dir = [(0, 1), (1, 0), (0, -1), (-1, 0)]self.count = 0def bfs(self, grid, visited, x, y):                                                     #广搜函数定义from collections import deque   queue = deque()                                                                     #初始化队列queue.append((x, y))                                                                #加入起始节点visited[x][y] = True                                                                #标记起始节点为已访问while queue:                                                                        #队列不为空进入循环curx, cury = queue.popleft()                                                    #取头节点for dx, dy in self.dir:                                                         #遍历四个方向nextx ,nexty = curx + dx, cury + dy                                     if nextx < 0 or nextx >= len(grid) or nexty < 0 or nexty >= len(grid[0]):   #越界就跳过continueif grid[nextx][nexty] == "0":                                               #如果本题中是海水也跳过continueif not visited[nextx][nexty]:                                               #把所有陆地标记为已访问queue.append((nextx, nexty))visited[nextx][nexty] = Truedef numIslands(self, grid: List[List[str]]) -> int:visited = [[False] * len(grid[0]) for _ in range(len(grid))]                        #初始化访问数组for i in range(len(grid)):for j in range(len(grid[0])):                                                   #遍历gridif visited[i][j] == False and grid[i][j] == "1":                            #如果节点没被访问过以及是陆地self.count += 1                                                         #计数+1self.bfs(grid, visited, i, j)                                           #深搜一下把当前节点连通的所有陆地都标记为已访问return self.count

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端-嵌套对象转FormData(支持文件/对象无限层级递归)

/*** 嵌套对象转FormData* @param formData* @param data* @param parentKey*/ const appendFormData = (formData: any, data: any, parentKey = ) => {for (const key in data) {if (Object.prototype.hasOwnProperty.call(data, key)) {const value = data[key];const fu…

如何让多人同时扫码看图?图片转二维码的制作方法

现在经常会发现需要通过扫描二维码的方式来获取图片信息&#xff0c;这种方式可以让很多人能够同时获取图片信息&#xff0c;有利于提升传播的效率和用户体验。那么如何使用图片二维码生成器来在线制作二维码呢&#xff1f;其实步骤很简单&#xff0c;只需要在电脑3步就可以轻松…

Solana 上创建自己的 SLPToken:简明指南

Solana 定义 Solana 是由 Solana Labs 创建的区块链平台&#xff0c;旨在提供高吞吐量和低延迟的去中心化应用&#xff08;DApps&#xff09;开发环境。它采用一系列创新技术&#xff0c;如 PoH&#xff08;Proof of History&#xff09;共识机制和 Tower BFT&#xff08;BFT …

大模型预测结果导入到Doccano,人工修正预测不准的数据

背景 使用大语言模型做实体识别的实验时&#xff0c;发现大模型关于实体的边界预测一直不准。 主要原因在于当时找了很多同学标注数据&#xff0c;由于不同组同学关于实体的边界没有统一&#xff0c;故导致数据集中实体边界也没统一。 &#xff08;找太多人标&#xff0c;会有…

数据结构常见面试问题答案总结

数据结构是计算机科学中的一个基础且重要的领域&#xff0c;面试中经常涉及数据结构的相关问题。以下是一些常见的数据结构面试问题及其答案总结&#xff1a; 数组和链表的区别是什么&#xff1f; 数组&#xff1a; 优点&#xff1a;访问速度快&#xff0c;因为可以通过索引直接…

HalconLen2-示例程序分析

dev_update_window(off) dev_open_window(0, 0, 512, 512, black, WindowHandle) //打开窗口 stop() //程序中断 *dev_close_window() //关闭窗口 read_image (Bond, die/die_03) //读取图片 dev_display(Bond) //显示图片 set_display_font(WindowHandle, 16, mono, true, fal…

#陶晶驰串口屏使用

1.陶晶驰串口屏输入要连接的wifi信息实现 &#xff08;1&#xff09;选择文本控件 &#xff08;2&#xff09;给文本控件配置输入键盘&#xff0c;id代表用户名&#xff0c;password代表wifi密码&#xff08;注意wifi的频段需要为2.4GHz&#xff09; &#xff08;3&#xff0…

【结构型模式】适配器模式

一、适配器模式概述 适配器模式的定义-意图&#xff1a;将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。(对象结构模式->对象适配器/类结构模式->类适配器) 适配器模式包含三个角色&#xff1a;目标(Target)角色、适配者(Adapt…

【运维】nginx配置解析

如果访问Nginx时出现502 Bad Gateway错误&#xff0c;则可能是Nginx主机上的SELinux限制了其使用http访问权限引起的&#xff0c;输入命令setsebool -P httpd_can_network_connect 1 开启权限即可。 nginx 基础配置 nginx 是一个功能非常强大的 web服务器加反向代理服务器&…

打破常规,重新定义PMP备考之路

今天我想和大家聊聊一个我们都不陌生的话题——PMP备考。你是不是也在备考的苦海中挣扎&#xff0c;或是听说过各种“速成”的神话&#xff1f;&#x1f914; 最近读到一篇文章&#xff08;来着圣略PMP培训讲师老杨&#xff09;&#xff0c;让我对PMP备考有了新的认识。原来&a…

常见的地图绘制方法,这个包全包了~~

在上一篇介绍完Bokeh精美可视化作品之后&#xff0c;有小伙伴咨询我能不能稍系统的介绍下如何在地图上添加如柱形图等其他元素的付方法&#xff1f; 这就让我想到一个优秀的地图绘制可视化包-R-cartography&#xff0c;虽然之前也有简单介绍过&#xff0c;本期就具体分享下该包…

Python QP 求解器

系列文章目录 前言 该 Python 库提供一站式 solve_qp 函数&#xff0c;用于求解凸二次规划&#xff1a; 向量不等式逐个坐标应用。函数返回后端 QP 求解器找到的初等解 &#xff0c;如果求解失败/问题不可行&#xff0c;则返回 None。所有求解器都要求问题是凸的&#xff0c;这…

CentOS 系统上使用 yum 安装 Nginx 及其模块

要在 CentOS 系统上使用 yum 安装 Nginx 及其 NJS (Nginx JavaScript Module)&#xff0c;首先需要确保你的系统已经包含了 Nginx 的官方仓库&#xff0c;因为 Nginx 的某些模块可能不在默认的软件仓库中。 以下是安装 Nginx 和 Nginx Module NJS 的基本步骤&#xff1a; 添加…

探讨选择成为一名程序员的原因,是出于兴趣还是职业发展。

选择成为一名程序员的原因可以是出于兴趣和职业发展两方面的考虑。以下是两个方面的探讨&#xff1a; 兴趣&#xff1a;许多人选择成为程序员是因为对计算机科学和编程的兴趣。他们喜欢解决问题、构建应用程序和创造新的数字体验。对于这些人来说&#xff0c;编程是一种有趣、令…

隐式/动态游标的创建与使用

目录 将 emp 数据表中部门 10 的员工工资增加 100 元&#xff0c;然后使用隐式游标的 %ROWCOUNT 属性输出涉及的员工数量 动态游标的定义 声明游标变量 打开游标变量 检索游标变量 关闭游标变量 定义动态游标&#xff0c;输出 emp 中部门 10 的所有员工的工号和姓名 Orac…

光圈如何影响图像质量

光圈是摄影中一个重要的参数&#xff0c;它决定了镜头的光线通过量&#xff0c;直接影响图像的曝光和深度。以下是光圈如何影响图像质量的几个方面&#xff1a; 曝光控制&#xff1a;光圈的大小决定了相机接收到的光线的数量。较大的光圈&#xff08;小光圈值&#xff09;允许…

Ubuntu安装Java17

Ubuntu安装Java17 文章目录 Ubuntu安装Java171. 升级Ubuntu软件资源库2. 安装OpenJDK3. 检查是否安装成功4. 检查OpenJDK被安装在什么地方5. 设置全局环境变量 1. 升级Ubuntu软件资源库 $ sudo apt update && sudo apt upgrade -y2. 安装OpenJDK $ sudo apt-get inst…

攻防演练,作为红方,安装Amass进行子域名扫描

要在Ubuntu系统上安装并使用Amass进行子域名扫描&#xff0c;可以按照以下步骤操作。这个过程涵盖了从安装到实际使用的全程。 1. 安装Amass 有多种方法可以在Ubuntu上安装Amass。我将介绍两种常见的方法&#xff1a;使用Snap包管理器和从源代码安装。 使用Snap安装&#xf…

【Vue3】getters---Vue3中的计算属性工具

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

多模态之ALBEF—先对齐后融合,利用动量蒸馏学习视觉语言模型表征,学习细节理解与论文详细阅读:Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation &#xff08;ALBEF&#xff09;在融合之前对齐&#xff1a;利用动量蒸馏进行视觉与语言表示学习 Paper: arxiv.org/pdf/2107.07651.pdf Github: https://github.com/salesforce/…