当前位置: 首页 > news >正文

面试150 克隆图

在这里插入图片描述

思路

调库法,python可以直接使用copy.deepcopy函数进行深拷贝。此外就是通过一个哈希表 d 记录原节点与其克隆节点的映射关系,防止重复克隆和处理图中的环。首先判断起始节点是否为空,若非空则从起点开始递归遍历。每访问一个未被克隆的节点时,创建其副本并存入字典,然后递归克隆其所有邻居节点,构建邻接关系。最终返回起始节点的克隆副本,即为整个图的深拷贝。

"""
# Definition for a Node.
class Node:def __init__(self, val = 0, neighbors = None):self.val = valself.neighbors = neighbors if neighbors is not None else []
"""from typing import Optional
class Solution:def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:return copy.deepcopy(node)
"""
# Definition for a Node.
class Node:def __init__(self, val = 0, neighbors = None):self.val = valself.neighbors = neighbors if neighbors is not None else []
"""from typing import Optional
class Solution:def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:if not node:return None d={}def dfs(old):if old not in d:node=Node(old.val)d[old]=nodenode.neighbors=[dfs(nei) for nei in old.neighbors]return d[old]return dfs(node)
http://www.lryc.cn/news/592335.html

相关文章:

  • 写在 35 岁生日的时候
  • 面试150 被围绕的区域
  • vue2 面试题及详细答案150道(71 - 80)
  • vue2 面试题及详细答案150道(91 - 100)
  • C++:vector(3)
  • 基于 fetch + ReadableStream 流式输出 实现 AI 聊天问答
  • 平板可以用来办公吗?从文档处理到创意创作的全面测评
  • openinstall九周年:聚焦安全防御,护航业务持续增长
  • 涉及海量数据的查询SQL建议使用“数据库函数”封装并调用
  • TCP通讯开发注意事项及常见问题解析
  • 如何检查GitHub上可能潜在的信息泄漏
  • web开发-HTML
  • leetcode2_135.分发糖果
  • leetcode15.三数之和题解:逻辑清晰带你分析
  • 华为欧拉系统(openEuler)安装 Docker 容器完整教程
  • Gemini Function Calling 和 Qwen3 Embedding和ReRanker模型
  • 服务器清理空间--主要是conda环境清理和删除
  • 弧焊机器人智能节气装置
  • Huber Loss(胡贝损失)详解:稳健回归的秘密武器 + Python实现
  • 【Git专栏】git如何切换到某个commit(超详细)
  • 铁路基础设施无人机巡检技术及管理平台
  • 【IOS webview】IOS13不支持svelte 样式嵌套
  • 计算机网络知名端口分配全表(0-1023)
  • 前端之CSS
  • Http请求中的特殊字符
  • 太阳辐射监测站:洞察太阳能量的科技之眼
  • RabbitMQ—TTL、死信队列、延迟队列
  • k8s:手动创建PV,解决postgis数据库本地永久存储
  • Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
  • 基于K8s ingress灰度发布配置