zoukankan      html  css  js  c++  java
  • 克隆图

    题目:克隆图

    问题描述:

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

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

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

    解决思路:

    经过分析,此问题可分为3种情况来解决:
    1、如果 node 为空,则直接返回。
    2、如果 node 已经存在于用于存储已克隆节点的 map 中,那么也直接返回。
    3、按照2的逻辑,如果 node 不存在于 map 中,那么根据当前 node 创建新的克隆节点,并且根据 DFS 遍历 node 的邻接列表加入到新创建克隆节点的邻接列表中。

    解决代码:

    
    class Solution {
        private Map<Integer, Node> visitedMap = new HashMap<>();
    
        public Node cloneGraph(Node node) {
            // 1.
            if(node == null) {
                return null;
            }
    
            // 2.
            Node clone = visitedMap.get(node.val);
            if(clone != null) {
                return clone;
            }
    
            // 3.
            clone = new Node(node.val);
            visitedMap.put(node.val, clone);
            for(Node neighborNode : node.neighbors) {
                clone.neighbors.add(cloneGraph(neighborNode));
            }
    
            return clone;
        }
    }
    
    
  • 相关阅读:
    MYSQL limit用法
    mybaties mapping中if
    执行数据库同时又调接口
    WITH (NOLOCK)
    SpringMVC转发和重定向区别!
    MyBatis的foreach语句详解
    SSM mapper.xml
    win7与virtualbox中centos文件共享
    PBOC2.0中消费交易流程
    PBOC2.0协议中电子存折/电子钱包中圈存交易流程
  • 原文地址:https://www.cnblogs.com/syhyfh/p/13253486.html
Copyright © 2011-2022 走看看