zoukankan      html  css  js  c++  java
  • [leetcode]Q133Clone Graph

    克隆图记住:一个map一个queue,照葫芦画瓢BFS

    找到一个节点就画一个对应的新的,用map对应,然后添加邻居,记录邻居到queue

    public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
            if (node==null) return node;
            UndirectedGraphNode res = new UndirectedGraphNode(node.label);
            Queue<UndirectedGraphNode> queue = new LinkedList<>();
            Map<UndirectedGraphNode,UndirectedGraphNode> map  = new HashMap<>();
            queue.offer(node);
            map.put(node,res);
            while (!queue.isEmpty()){
                UndirectedGraphNode cur = queue.poll();
                List<UndirectedGraphNode> neighbors = cur.neighbors;
                for (UndirectedGraphNode neighbor :
                        neighbors) {
                    if (!map.containsKey(neighbor)){
                        UndirectedGraphNode newNode = new UndirectedGraphNode(neighbor.label);
                        queue.offer(neighbor);
                        //在旧图中每遍历到一个节点,就在map中给新图申请一个对应的内存
                        map.put(neighbor,newNode);
                    }
                    //根据旧图中的位置为新图添加邻居
                    map.get(cur).neighbors.add(map.get(neighbor));
                }
            }
            return res;
        }
  • 相关阅读:
    第06组 Beta冲刺 总结
    第06组 Beta冲刺 (5/5)
    第06组 Beta冲刺 (4/5)
    第06组 Beta冲刺 (3/5)
    第06组 Beta冲刺 (2/5)
    第06组 Beta冲刺 (1/5)
    第06组 alpha冲刺 总结
    第06组 Alpha冲刺 (6/6)
    数据采集第四次作业
    第06组(67)团队展示
  • 原文地址:https://www.cnblogs.com/stAr-1/p/9433050.html
Copyright © 2011-2022 走看看