133. 克隆图

133. 克隆图

  • 题目-中等难度
  • 示例
  • 1. bfs

题目-中等难度

给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。

图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。

class Node {
public int val;
public List neighbors;
}

测试用例格式:

简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。

邻接列表 是用于表示有限图的无序列表的集合。每个列表都描述了图中节点的邻居集。

给定节点将始终是图中的第一个节点(值为 1)。你必须将 给定节点的拷贝 作为对克隆图的引用返回。

示例

示例 1:
在这里插入图片描述

输入:adjList = [[2,4],[1,3],[2,4],[1,3]]
输出:[[2,4],[1,3],[2,4],[1,3]]
解释:
图中有 4 个节点。
节点 1 的值是 1,它有两个邻居:节点 2 和 4 。
节点 2 的值是 2,它有两个邻居:节点 1 和 3 。
节点 3 的值是 3,它有两个邻居:节点 2 和 4 。
节点 4 的值是 4,它有两个邻居:节点 1 和 3 。

示例 2:
在这里插入图片描述

输入:adjList = [[]]
输出:[[]]
解释:输入包含一个空列表。该图仅仅只有一个值为 1 的节点,它没有任何邻居。

示例 3:

输入:adjList = []
输出:[]
解释:这个图是空的,它不含任何节点。

示例 4:

在这里插入图片描述

输入:adjList = [[2],[1]]
输出:[[2],[1]]

提示:

  • 节点数不超过 100 。
  • 每个节点值 Node.val 都是唯一的,1 <= Node.val <= 100。
  • 无向图是一个简单图,这意味着图中没有重复的边,也没有自环。
  • 由于图是无向的,如果节点 p 是节点 q 的邻居,那么节点 q 也必须是节点 p 的邻居。
  • 图是连通图,你可以从给定节点访问到所有节点。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1. bfs

时间
48ms
击败 74.56%使用 Python3 的用户
内存
15.95MB
击败 90.86%使用 Python3 的用户

"""
# Definition for a Node.
class Node:def __init__(self, val = 0, neighbors = None):self.val = valself.neighbors = neighbors if neighbors is not None else []
"""class Solution:def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:# 如果没有节点存在, 直接返回空节点if not node:return node# 创建字典visited = defaultdict()# 根节点放入列表中li = [node]# 将放入的根节点添加到字典, 以对象的形式存在visited[node] = Node(node.val,[])# 广度遍历while li:# 获取节点a = li.pop(0)# 遍历当前节点的neighborsfor n in a.neighbors:# 如果 neighbor中的节点不在字典中if n not in visited:# 添加节点作为对象到字典visited[n] = Node(n.val,[])# 添加节点到lili.append(n)# 当前对象的neighbors列表中添加关联对象visited[a].neighbors.append(visited[n])# 返回node对象return visited[node]

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

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

相关文章

CocosCreator3.8研究笔记(十五)CocosCreator 资源管理Asset Bundle

在资源管理模块中有一个很重要的功能&#xff1a; Asset Bundle&#xff0c;那什么是Asset Bundle &#xff1f;有什么作用&#xff1f;怎么使用 Asset Bundle呢 &#xff1f; 一、什么是Asset Bundle &#xff1f;有什么作用&#xff1f; 在日常游戏开发过程中&#xff0c;为了…

公转私到底怎么转才安全?通过这两种方法合理节税!

《梅梅谈税》专注于企业税务筹划&#xff01;助力企业合理、合规、合法进行节税税收筹划&#xff01; 公司本就是一个盈利的组织形式 &#xff0c;成立公司就是为了赚钱&#xff0c;公司赚了钱&#xff0c;就要转至私人账户自由支配&#xff0c;怎么合理从公司拿钱出来这也让很…

管理者,怎样招到合适的人?

导语: 企业的成功离不开优秀的人才&#xff0c;而招聘是引入人才的关键环节。本文将分享一些招聘合适人才的秘诀&#xff0c;帮助您提高招聘的效果。 明确岗位需求和招聘目标: 在开始招聘之前&#xff0c;确保您清楚地了解所需岗位的具体职责和技能要求。制定一份清晰的招聘目…

Python 中的 sscanf() 函数

文章目录 Python 中的 sscanf() 功能使用 re 库中的正则表达式使用Neuron库 函数 sscanf() 来自编程语言 C 和 C。 虽然 Python 没有为此方法提供任何完全等效的方法或库&#xff0c;但可能有其他方法来执行此功能。 这篇 Python 文章将使您更好地理解 sscanf() 必须提供什么以…

几个国内可用的强大的GPT工具

前言&#xff1a; 人工智能发布至今&#xff0c;过去了九个多月&#xff0c;已经成为了我们不管是工作还是生活中一个重要的辅助工具&#xff0c;大大提升了效率&#xff0c;作为一个人工智能的自然语言处理工具&#xff0c;它给各大行业的提供了一个巨大的生产工具&#xff0c…

玩转Mysql系列 - 第21篇:什么是索引?

这是Mysql系列第21篇。 本文开始连续3篇详解mysql索引&#xff1a; 第1篇来说说什么是索引&#xff1f; 第2篇详解Mysql中索引的原理 第3篇结合索引详解关键字explain 本文为索引第一篇&#xff1a;我们来了解一下什么是索引&#xff1f; 路人在搞计算机之前&#xff0c;…

002-第一代硬件系统架构确立及产品选型

第一代硬件系统架构确立及产品选型 文章目录 第一代硬件系统架构确立及产品选型项目介绍摘要硬件架构硬件结构选型及设计单片机选型上位机选型扯点别的 关键字&#xff1a; Qt、 Qml、 信号采集机、 数据处理、 上位机 项目介绍 欢迎来到我们的 QML & C 项目&#xff…

从零学习开发一个RISC-V操作系统(一)丨计算机组成原理相关知识与RISC-V指令集简介

本篇文章的内容 一、计算机组成原理的相关知识1.1 计算机的硬件组成1.2 程序的存储与执行1.3 程序语言的设计和进化1.4 存储设备的层次结构1.5 操作系统 二、RISC-V的指令集ISA简介2.1 什么是ISA2.2 复杂指令集&#xff08;CISC&#xff09;和精简指令集&#xff08;RISC&#…

五个很实用的IDEA使用技巧

日常开发中&#xff0c;相信广大 Java 开发者都使用过 IntelliJ IDEA 作为开发工具&#xff0c;IntelliJ IDEA 是一款优秀的 Java 集成开发环境&#xff0c;它提供了许多强大的功能和快捷键&#xff0c;可以帮助开发者提高编码效率和质量。除了一些常见的技巧&#xff0c;如自动…

C++ explicit的作用

注&#xff1a;内容参考学习 Leetcode 上的《C面试突破》 一、作用 用来声明类构造函数是显示调用的&#xff0c;而非隐式调用&#xff0c;可以阻止调用构造函数时进行隐式转换和赋值初始化。注意&#xff1a;只可用于修饰单参构造函数&#xff0c;因为无参构造函数和多参构…

delphi Variant 与 流(TStream)相互转换

Variant 与 流&#xff08;TStream&#xff09;相互转换 代码 Variant转TStream procedure VariantToStream(Stream: TStream; const Value: Variant); varp: Pointer; beginif VarIsNull(Value) or VarIsEmpty(Value) thenExit;Stream.Size : VarArrayHighBound(Value, 1) …

【vue3页面展示代码】展示代码codemirror插件

技术版本&#xff1a; vue 3.2.40、codemirror 6.0.1、less 4.1.3、vue-codemirror 6.1.1、 codemirror/lang-vue 0.1.2、codemirror/theme-one-dark 6.1.2 效果图&#xff1a; 1.安装插件 yarn add codemirror vue-codemirror codemirror/lang-vue codemirror/theme-one-dar…

神经网络 03(参数初始化)

一、参数初始化 对于某一个神经元来说&#xff0c;需要初始化的参数有两类&#xff1a;一类是权重W&#xff0c;还有一类是偏置b&#xff0c;偏置b初始化为0即可。而权重W的初始化比较重要&#xff0c;我们着重来介绍常见的初始化方式。 &#xff08;1&#xff09;随机初始化 …

Prometheus、node_exporter、Grafana端口修改(端口占用)

服务器监控搭建完成后涉及默认端口修改&#xff0c;如下 node_exporter 端口修改 #修改启动服务 vi /usr/lib/systemd/system/node-exporter.service #增加 --web.listen-address:8002 [Unit] ​ DescriptionThis is prometheus node exporter ​ Afternode_exporter.service…

《PostgreSQL与NoSQL:合作与竞争的关系》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

山西电力市场日前价格预测【2023-09-21】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-09-21&#xff09;山西电力市场全天平均日前电价为345.38元/MWh。其中&#xff0c;最高日前电价为408.38元/MWh&#xff0c;预计出现在19: 00。最低日前电价为246.41元/MWh&#xff0c;预计…

ew三层代理使用方法

1.获得目标网络内两台主机 A、B 的权限&#xff0c;情况描述如下&#xff1a; A 主机&#xff1a; 目标网络的边界主机&#xff0c;无公网 IP&#xff0c;无法访问特定资源。 B 主机&#xff1a; 目标网络内部主机&#xff0c;可访问特定资源&#xff0c;却无…

查看docker镜像是由哪些指令创建来的

–no-trunc 是不要省略。 docker history --no-trunc kevinchina/deeplearning:sd_base_cuda116clip7 > history.txtcp -aL ~/.cache/huggingface/hub/models–Salesforce–blip-image-captioning-large/snapshots/e33defe055114d86bec9c0705b71e590cfc0694c/* ~/.cache/hu…

k8s手动下载镜像、通过容器创建镜像方法

手动下载镜像 1、首先pull镜像到本地 docker pull <镜像名称>:<标签>2、转储镜像 docker save -o /path/to/save/image.tar 3、解压 tar -xvf /path/to/save/image.tar补充 1、如果要将tar还原成镜像 docker load -i /path/to/save/image.tar或者用输入重定向…

lazada跨境电商商品数据采集

Lazada跨境电商商品数据采集可以使用以下两种方法&#xff1a; 手动采集&#xff1a;可以在Lazada网站上手动搜索商品信息&#xff0c;然后复制粘贴到Excel表格中。这种方法比较麻烦&#xff0c;需要逐个搜索和记录商品信息&#xff0c;适合采集数量较少的商品数据。使用采集软…