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;
        }
  • 相关阅读:
    AcWing 125. 耍杂技的牛
    AcWing 148. 合并果子
    AcWing 907. 区间覆盖
    AcWing 908. 最大不相交区间数量
    AcWing 906. 区间分组
    AcWing 905. 区间选点
    AcWing 285. 没有上司的舞会
    AcWing 1049. 大盗阿福
    AcWing 901. 滑雪
    AcWing 91. 最短Hamilton路径
  • 原文地址:https://www.cnblogs.com/stAr-1/p/9433050.html
Copyright © 2011-2022 走看看