dfs+哈希表+图
先深搜建立所有点,加入哈希表。再遍历哈希表,按照拷贝前后的结点,拷贝边。最后返回某一结点,即为所求。
class Solution {
public:
unordered_map<Node*,Node*> mp;
Node* cloneGraph(Node* node) {
if(!node) return node;
dfs(node);
for(auto &[s,d]:mp)
for(auto &e:s->neighbors)
d->neighbors.push_back(mp[e]);
return mp[node];
}
void dfs(Node *node) {
mp[node] = new Node(node->val);
for(auto &v:node->neighbors)
if(!mp.count(v)) dfs(v);
}
};
- 时间复杂度 : O ( ∑ i = 0 n m i ) O(\sum_{i=0}^{n} m_i) O(∑i=0nmi) , n n n 是点的数量, m m m 是边的数量,遍历所有点的所有边,时间复杂度 O ( ∑ i = 0 n m i ) O(\sum_{i=0}^{n} m_i) O(∑i=0nmi) 。
- 空间复杂度 : O ( n ) O(n) O(n) , 哈希表存 n n n 个点的空间复杂度 O ( n ) O(n) O(n) 。
AC






![[静态时序分析简明教程(八)]虚假路径](https://img-blog.csdnimg.cn/b7bb17870a764c6f923d00c99379c0a5.png)


![[附源码]计算机毕业设计springboot医疗器械公司公告管理系统](https://img-blog.csdnimg.cn/9c2d8d3841234e129d9f75ec69edfcf2.png)


![[附源码]计算机毕业设计学生综合数据分析系统Springboot程序](https://img-blog.csdnimg.cn/8fac5d93f1514737bde372a85756aa66.png)







