`
ouqi
  • 浏览: 42181 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

[leetcode]Clone Graph

 
阅读更多

看到克隆图,自然想到遍历所有节点的算法,DFS/BFS改造下就可以了

本题中map用来保存已复制的节点(关系没有复制),同时也起到一个标记节点已访问过的作用。

 /**
 * Definition for undirected graph.
 * class UndirectedGraphNode {
 *     int label;
 *     ArrayList<UndirectedGraphNode> neighbors;
 *     UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); }
 * };
 */

public class Solution {
    private HashMap<UndirectedGraphNode,UndirectedGraphNode> map = new HashMap<UndirectedGraphNode,UndirectedGraphNode>();//已复制过的节点
    public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        map.clear();
        return clone(node);
    }
    //dfs
     public UndirectedGraphNode clone(UndirectedGraphNode node){
         if(node == null) return null;
         UndirectedGraphNode clonedNode =  new UndirectedGraphNode(node.label);
         map.put(node,clonedNode);
         if(node.neighbors == null||node.neighbors.size() == 0) {
             return clonedNode;
         }
         for(UndirectedGraphNode unode:node.neighbors){
             UndirectedGraphNode cloned = map.get(unode);
             if(cloned == null){
               UndirectedGraphNode cloneNeighborNode = clone(unode);
               clonedNode.neighbors.add(cloneNeighborNode);
             }else{
                 clonedNode.neighbors.add(cloned);
             }
             
         }
       
         return clonedNode;
         
     }
    
}
分享到:
评论

相关推荐

    CloneGraph

    leetcode CloneGraph java 源代码

    133.Clone Graph 克隆图【LeetCode单题讲解系列】

    133.Clone_Graph_克隆图【LeetCode单题讲解系列】

    python-leetcode题解之133-Clone-Graph

    python python_leetcode题解之133_Clone_Graph

    js-leetcode题解之133-clone-graph.js

    javascript js_leetcode题解之133-clone-graph.js

    Leetcode book刷题必备

    38. Clone Graph:深度复制一个图。 【栈】 39. Min Stack:设计一个栈,支持 push、pop、top 操作,并且在常数时间内得到栈的最小值。 40. Evaluate Reverse Polish Notation:计算后缀表达式。 41. Valid ...

    Leetcode答案(c++版)

    **1.19 Clone Graph (133)** - **问题描述**:给定一个无向图,对其进行深拷贝。 - **解题思路**: - 使用深度优先搜索(DFS)或广度优先搜索(BFS)遍历整个图。 - 对于每个访问过的节点,创建一个副本,并将...

    leetcode分类-leetcode-solution:leetcode-解决方案

    用java解决包含但不限于array/tree/graph等几种数据结构、分治/DP/backtrack等几种算法思想的题目,并取得平均题解runtime beats 80%的成绩。 每天打卡(估计很快失败)平均每天1题保本,2题赚翻。 项目构建: 根...

    leetcode java

    杂项部分包括了一些不那么容易归类的问题,如螺旋矩阵(Spiral Matrix)、整数转罗马数字(Integer to Roman)、克隆图(Clone Graph)等。 **栈(Stack)** 栈是一种先进后出(FILO)的数据结构。 - 最小栈(Min ...

    leetcode分类-leetcode:leetcode

    leetcode 分类 Leetcode 介绍 leetcode个人题解,根据leetcode给的标签进行分类,按照数据结构对题目...graph:图论 greedy:贪心算法 recursion:递归算法 sort:排序算法 heap: 堆的应用题解 安装教程 clone IDEA JDK 8

    leetcode同类骰子-Algorithms:LeetCode,GeeksforGeeks

    Clone Graph, medium --- 类似于#138 207,课程表,中等 210 课程表 II,中等 261,图有效树,中等 310,最小高度树,中等 323,无向图中连通分量的数量,中等 444,序列重建,中 第二周——堆 215,数组中的第 K 个...

    algorithms:只是个菜鸟。这个项目是在空闲时间编写的。我会不定期更新。希望与您分享一些东西〜

    与大家分享我学习算法的一些经历。这个项目不定期更新。数组/链表:树相关:AVLTree 平衡二叉搜索树...BFSGraph 图BFS模板Dijkstra 寻求最短路SwimmingCrossSea 漂洋过海CloneGraph (leetcode 133)字符串相关:Reve

    LeetCode

    例如,"Clone Graph"题目中,通过DFS克隆一个无向图;"Shortest Path in Binary Matrix"则需要BFS寻找矩阵中最短路径。 总结,通过LeetCode的实践,我们可以提升JavaScript编程技巧,熟练掌握各种数据结构和算法,...

    Leetcode注意

    图形**** ****BFS class Solution { public Node cloneGraph ( Node node ) { if (node == null ) { return null ; } Map&lt; Node&gt; map = new HashMap&lt;&gt; (); Queue&lt; Node&gt; queue = new LinkedList&lt;&gt; (); queue ....

    股票买卖最佳时机leetcode-Java-Projects:Java项目和面试问题的存储库,用于编码面试的练习

    Clone_Graph 组合_总和 Counting_Carry_Digits 平等的 First_Missing_Positive Generate_All_Parenthesis_2 实现_StrStr Largest_Distance_Between_Nodes_Of_A_Tree Largest_Rectangle_In_Histogram Least_C

    克隆图(python map+dfs)1

    `cloneGraph`函数的目的是接收一个`Node`对象并返回一个新的、完全独立的`Node`对象,所有节点及其连接关系都要被正确地复制。 解决方案是使用深度优先搜索策略。首先,创建一个空的`map_list`字典,用于存储原图中...

    常见算法题答案及解析

    38. Clone Graph:复制一个无向图。 39. Min Stack:设计一个栈,支持获取栈内最小元素的操作。 40. Evaluate Reverse Polish Notation:计算后缀表达式的值。 41. Valid Parentheses:判断字符串是否为有效的括号...

    CPP-JAVA-DSA:使用C ++和Java解决了来自不同编码网站的面试CC问题

    存储库会定期更新,因此请确保提取代码git pull组织这些问题按其来源的主要主题划分问题陈述在代码顶部被注释掉LeetCode问题被命名为leetcode_(问题编号)_(问题标题),并且仅提供Solution类其他问题仅通过标题...

Global site tag (gtag.js) - Google Analytics