当前位置:网站首页>LeetCode 0133. 克隆图
LeetCode 0133. 克隆图
2022-07-25 11:56:00 【Tisfy】
【LetMeFly】133.克隆图:BFS
力扣题目链接:https://leetcode.cn/problems/clone-graph/
给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。
图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。
class Node {
public int val;
public List<Node> 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 的邻居。
- 图是连通图,你可以从给定节点访问到所有节点。
方法一:BFS
我们可以通过广度优先搜素遍历一遍原图
遍历过程中,如果某个节点是第一次遇到,就新建一个和它的值相同的节点,并且用哈希表存下来原始节点对应的新节点是谁
不断把第一次遍历到的节点入队,每次从队中取出一个节点,把它的所有的边,添加给Copy出来的新节点。
- 时间复杂度 O ( n ) O(n) O(n),其中 n n n是节点的个数
- 空间复杂度 O ( n ) O(n) O(n)
AC代码
C++
class Solution {
public:
Node* cloneGraph(Node* node) {
if (!node)
return nullptr;
unordered_map<Node*, Node*> ma;
queue<Node*> q;
q.push(node);
ma[node] = new Node(node->val);
while (q.size()) {
Node* thisNode = q.front();
q.pop();
for (Node* to : thisNode->neighbors) {
if (!ma.count(to)) {
ma[to] = new Node(to->val);
q.push(to); // 这里是to
}
ma[thisNode]->neighbors.push_back(ma[to]); // 这里是ma[thisNode]
}
}
return ma[node];
}
};
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/125960776
边栏推荐
- PyTorch的生态简介
- Behind the screen projection charge: iqiyi's quarterly profit, is Youku in a hurry?
- Scott+scott law firm plans to file a class action against Yuga labs, or will confirm whether NFT is a securities product
- 2.1.2 机器学习的应用
- Musk's "eternal soul": half hype, half flicker
- Resttemplate and ribbon are easy to use
- A method to prevent SYN flooding attacks -- syn cookies
- Monit installation and use
- 软件测试面试题目:请你列举几个物品的测试方法怎么说?
- WPF项目入门1-简单登录页面的设计和开发
猜你喜欢

Client open download, welcome to try

2.1.2 机器学习的应用

Pytorch project practice - fashionmnist fashion classification

A method to prevent SYN flooding attacks -- syn cookies

WPF项目入门1-简单登录页面的设计和开发

技术管理杂谈

搭建Vision Transformer系列实践,终于见面了,Timm库!

2022.07.24(LC_6126_设计食物评分系统)

919. 完全二叉树插入器 : 简单 BFS 运用题

Brpc source code analysis (II) -- the processing process of brpc receiving requests
随机推荐
请问一下,使用数据集成从postgreSQL导数据到Mysql数据库,有部分数据的字段中出现emoj
协程
[ROS advanced chapter] Lecture 9 programming optimization of URDF and use of xacro
scrapy 设置随机的user_agent
Azure Devops (XIV) use azure's private nuget warehouse
和特朗普吃了顿饭后写下了这篇文章
Kyligence 入选 Gartner 2022 数据管理技术成熟度曲线报告
numpy初识
R language Visual scatter diagram, geom using ggrep package_ text_ The rep function avoids overlapping labels between data points (set the min.segment.length parameter to inf and do not add label segm
Keeping MySQL highly available
2022 Henan Mengxin League game (3): Henan University I - Travel
【十一】矢量、栅格数据图例制作以及调整
软件测试流程包括哪些内容?测试方法有哪些?
【9】 Coordinate grid addition and adjustment
【三】DEM山体阴影效果
mysql有 flush privileges 吗
919. Complete binary tree inserter: simple BFS application problem
【3】 DEM mountain shadow effect
Ansible
Mirror Grid