• [133. 克隆图]


    [133. 克隆图]

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

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

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

    测试用例格式:

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

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

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

    public class Q133 {
    // Definition for a Node.
        class Node {
            public int val;
            public List<Node> neighbors;
    
            public Node() {
                val = 0;
                neighbors = new ArrayList<Node>();
            }
    
            public Node(int _val) {
                val = _val;
                neighbors = new ArrayList<Node>();
            }
    
            public Node(int _val, ArrayList<Node> _neighbors) {
                val = _val;
                neighbors = _neighbors;
            }
        }
    
        public Node cloneGraph(Node node) {
    
            HashMap<Node, Node> map = new HashMap<>();
            map.put(node, new Node(node.val, new ArrayList<>()));
            Queue<Node> q = new LinkedList<Node> ();
            q.add(node);
    
            while (!q.isEmpty()) {
                Node tmp  = q.poll();
                Node newtmp = map.get(tmp);
    
                for (Node node1 : tmp.neighbors) {
    
                    if(!map.containsKey(node1)) {
                        map.put(node1, new Node(node1.val));
                        //注意这里要传入的是原节点而不是克隆节点
                        q.add(node1);
                    }
                    newtmp.neighbors.add(map.get(node1));
                }
    
            }
    
            return map.get(node);
    
        }
    
    }
    
    因为我喜欢追寻过程中的自己
  • 相关阅读:
    Java
    Java
    Java
    Java
    NYOJ 127 星际之门(一)
    BNUOJ 1013 YC大牛的判题任务
    BNUOJ 1011 人工智能?
    HDU 1035 Robot Motion
    HDU 1214 圆桌会议
    NYOJ 86 找球号(一)
  • 原文地址:https://www.cnblogs.com/IzuruKamuku/p/14359744.html
Copyright © 2020-2023  润新知