代码随想录图论

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,一经查实,立即删除!

相关文章

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

现在经常会发现需要通过扫描二维码的方式来获取图片信息&#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;会有…

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…

打破常规,重新定义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;这…

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

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

【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/…

napi系列学习基础篇——如何通过DevEco Studio开发一个NAPI工程

简介 NAPI&#xff08;Native API&#xff09;是OpenHarmony系统中的一套原生模块扩展开发框架&#xff0c;它基于Node.js N-API规范开发&#xff0c;为开发者提供了JavaScript与C/C模块之间相互调用的交互能力。如下图所示&#xff1a; 这套机制对于鸿蒙系统开发的价值有两方…

权威认证!亚信安全9款产品入选CCIA首版《网络安全专用产品指南》

权威认证 近日&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;正式发布《网络安全专用产品指南》&#xff08;第一版&#xff09;&#xff08;以下简称《指南》&#xff09;&#xff0c;亚信安全凭借突出技术实力、创新优势以及业内深厚积累&#xff0c;旗下9款…

学会 Python 后可以做什么副业?

近年来&#xff0c;Python凭借其简洁易入门的特点受到越来越多人群的青睐。 当然这不仅仅是针对程序员来说&#xff0c;对于一些学生、职场人士也是如此。 Python为什么会大受欢迎呢&#xff1f;因为Python还被大家称为“胶水语言&#xff0c;它适用于网站、桌面应用开发、[自…

大模型微调的几种常见方法

在文章深入理解大语言模型微调技术中&#xff0c;我们详细了解大语言模型微调的概念和训练过程&#xff0c;本篇给大家介绍大模型微调常见的7种训练方法。 1、Adapter Tuning 2019年谷歌的研究人员首次在论文《Parameter-Efficient Transfer Learning for NLP》提出针对 BERT 的…

Matlab求矩阵的逆,3种常用方法总结

几种求逆矩阵的方法总结&#xff0c;以Matlab语言为例 *0* 引言*1* 简单描述函数实现*2* 方法调用计算对比 0 引言 最近在使用函数库求解逆矩阵的时候发现同一个矩阵使用不同的语言、不同的求解方法会产生不同精度的结果&#xff0c;特别是阶数很高的方阵&#xff0c;一些库中的…

第14章 大数据与数据科学知识点梳理

第14章 大数据与数据科学知识点梳理&#xff08;附带页码&#xff09; ◼ 原则&#xff1a;组织应仔细管理与大数据源相关的元数据&#xff0c;以便对数据文件及其来源和价值进行准确的清单管理。P386 ◼ 大数据&#xff1a;数据量大&#xff08;Volume&#xff09;、数据更新…

未来计算机的发展趋势是什么?

未来计算机的发展趋势是多方面的,涵盖了硬件、软件、体系结构以及计算范式等多个层面。以下是一些预期的趋势: 1. 量子计算: 随着量子理论的不断成熟和技术的进步,量子计算机将可能解决传统计算机难以处理的问题,比如药物发现、材料科学、复杂系统模拟等领域。量子计算的…

专访《综合品酒师》培训破大世界基尼斯之最纪录,开启行业新篇章

在一个阳光明媚的午后&#xff0c;记者来到了位于城市繁华地段的云仓酒庄。走进云仓酒庄&#xff0c;浓郁的酒香扑鼻而来&#xff0c;配合着柔和的灯光和精致的装饰&#xff0c;记者仿佛置身于一个酒文化的殿堂。在这里&#xff0c;记者有幸采访到了云仓酒庄的负责人&#xff0…