力扣(LeetCode)133

栏目: 编程工具 · 发布时间: 7年前

内容简介:题目地址:题目描述:

题目地址:

https://leetcode-cn.com/probl...

题目描述:

给定无向连通图中一个节点的引用,返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(Int) 和其邻居的列表(list[Node])。

提示:

节点数介于 1 到 100 之间。

无向图是一个简单图,这意味着图中没有重复的边,也没有自环。

由于图是无向的,如果节点 p 是节点 q 的邻居,那么节点 q 也必须是节点 p 的邻居。

必须将给定节点的拷贝作为对克隆图的引用返回。

解答:

首先解释一下,深拷贝的意思是,一个节点,若对它进行深拷贝,那么必然生成一个新的节点,这个节点的所有的属性值和原节点相同,但是这两个节点在内存中是两个不同的对象,这样称之为深拷贝。

这一题的做法是,使用一个hashmap来记录,原node 和 新node的对应关系。

若原node已经作为key存在于hashmap里,那么说明它的拷贝(新node)也

已经存在,那么直接获得它的拷贝,否则,就要为这个node生成新的拷贝

然后,把拷贝放入hashmap中, 并且使得拷贝(新node)的邻接链表添加原node的邻接链表里元素的拷贝

话比较绕,看代码就懂了!!!

java ac代码:

/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> neighbors;

    public Node() {}

    public Node(int _val,List<Node> _neighbors) {
        val = _val;
        neighbors = _neighbors;
    }
};
*/
class Solution {
    HashMap<Node,Node>map = new HashMap();
    public Node cloneGraph(Node node) {
 
        if(node == null)return null;
        if(map.containsKey(node))
            return map.get(node);
        Node newnode = new Node(node.val,null);
        map.put(node,newnode);
        if(node.neighbors != null){
            newnode.neighbors = new ArrayList();
            for(Node nn:node.neighbors)
                newnode.neighbors.add(cloneGraph(nn));
        }
       return newnode;
        
    }
}

以上所述就是小编给大家介绍的《力扣(LeetCode)133》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Numerical Recipes 3rd Edition

Numerical Recipes 3rd Edition

William H. Press、Saul A. Teukolsky、William T. Vetterling、Brian P. Flannery / Cambridge University Press / 2007-9-6 / GBP 64.99

Do you want easy access to the latest methods in scientific computing? This greatly expanded third edition of Numerical Recipes has it, with wider coverage than ever before, many new, expanded and upd......一起来看看 《Numerical Recipes 3rd Edition》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具