• 133. Clone Graph


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

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

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

    测试用例格式:

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

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

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

     1 """
     2 # Definition for a Node.
     3 class Node(object):
     4     def __init__(self, val = 0, neighbors = []):
     5         self.val = val
     6         self.neighbors = neighbors
     7 """
     8 class Solution(object):
     9     def cloneGraph(self, node):
    10         """
    11         :type node: Node
    12         :rtype: Node
    13         """
    14 
    15         if(node==None):return None
    16 
    17         dic={}
    18         dic[node]=Node(node.val)
    19         que=[node]
    20 
    21         while(len(que)!=0):
    22             # 出队一个节点
    23             cur=que.pop(0)
    24 
    25             # 遍历队头节点的所有邻接点
    26             for nb in cur.neighbors:
    27                 # 如果nb还没有复制节点
    28                 if nb not in dic:
    29                     nb_copy=Node(nb.val)
    30                     dic[nb]=nb_copy
    31                     dic[cur].neighbors.append(nb_copy)
    32 
    33                     que.append(nb)
    34                 # 如果已经有了nb的复制节点,就复制cur-nb 和 dic[cur]-dic[nb]之间的映射关系
    35                 else:
    36                     dic[cur].neighbors.append(dic[nb])
    37         return dic[node]
    38 
    39 
    40             
  • 相关阅读:
    caffe for python (官方翻译)
    实验三、页式地址重定位模拟
    实验二、银行家算法
    实验一:进程调度实验
    植物大战僵尸作弊器源代码(MFC版)
    植物大战僵尸作弊器源代码(控制台版)
    CE寻找游戏基址
    植物大战僵尸内存地址(转)
    Detour的简单使用
    C/S模型之命名管道
  • 原文地址:https://www.cnblogs.com/zijidan/p/12544156.html
Copyright © 2020-2023  润新知