首页 > 其他分享 >【BFS】LeetCode 133. 克隆图

【BFS】LeetCode 133. 克隆图

时间:2023-01-12 21:56:56浏览次数:62  
标签:node 133 queue Node BFS neighbor new visited LeetCode

题目链接

133. 克隆图

思路

代码

class Solution {
    public Node cloneGraph(Node node) {
        if(node == null){
            return node;
        }

        HashMap<Node, Node> visited = new HashMap();
        LinkedList<Node> queue = new LinkedList<Node>();

        queue.add(node);
        visited.put(node, new Node(node.val, new ArrayList()));
        while(!queue.isEmpty()){
            Node n = queue.remove();
            for(Node neighbor : n.neighbors){
                if(!visited.containsKey(neighbor)){
                    visited.put(neighbor, new Node(neighbor.val, new ArrayList()));
                    queue.add(neighbor);
                }
                // renew current node's neighbor list
                visited.get(n).neighbors.add(visited.get(neighbor));
            }
        }

        return visited.get(node);
    }
}

标签:node,133,queue,Node,BFS,neighbor,new,visited,LeetCode
From: https://www.cnblogs.com/shixuanliu/p/17048022.html

相关文章

  • 【LeetCode链表#6】移除链表元素
    移除链表元素题目力扣题目链接(opensnewwindow)题意:删除链表中等于给定值val的所有节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输......
  • leetcode-easy-两数之和
    两数之和一解题思路:使用循环的方法从前到后计算给出的数组,直到找到目标题目#给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target......
  • LeetCode刷题(13)~移动零
    题目描述给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入:[0,1,0,3,12]输出:[1,3,12,0,0]说明:必须在原数组上操作,不能拷......
  • LeetCode刷题(12)~加一
    题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整......
  • LeetCode刷题(10)~只出现一次的数字
    题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。你可以不使用额外......
  • LeetCode刷题(11)~ 两个数组的交集 II
    题目描述给定两个数组,编写一个函数来计算它们的交集。示例1:输入:nums1=[1,2,2,1],nums2=[2,2]输出:[2,2]示例2:输入:nums1=[4,9,5],nums2=[9,4,9,8,4]输出:[4,9]......
  • LeetCode刷题(9)~存在重复元素
    题目描述给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。示例1:输入:[1,2,3,1]输......
  • LeetCode刷题(8)~旋转数组
    题目描述给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例1:输入:[1,2,3,4,5,6,7]和k=3输出:[5,6,7,1,2,3,4]解释:向右旋转1步:[7,1,2,3,4,5,6......
  • LeetCode刷题(7)~删除排序数组中的重复项
    题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用......
  • LeetCode刷题(4)~ 最长公共前缀
    题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串“”。示例1:输入:[“flower”,“flow”,“flight”]输出:“fl”示例2:输......