力扣(LeetCode)133

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

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

题目地址:

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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

创业就是要细分垄断

创业就是要细分垄断

李开复、汪华、傅盛 / 文化发展出版社 / 2017-5-1 / CNY 45.00

对各方面资源极为有限的创业公司而言,想在激烈的市场竞争中站立下来的第一步是:成为细分市场的垄断者。不管是资本还是尖端人才,追逐的永远是行业里尖端的企业,第二名毫无意义。 首先,要精准定位潜在市场。这个市场的需求仍没有被满足,并且潜力巨大。其次,抓住时代和行业的红利,通过高速增长实现“小垄断”,抢滩登陆。最后,在细分领域里建立起自己的竞争壁垒,应对巨头和竞争对手的复制,去扩展更大的市场,从而扩......一起来看看 《创业就是要细分垄断》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

html转js在线工具
html转js在线工具

html转js在线工具