【Leetcode】 Clone Graph
2016-05-31 00:49
399 查看
题目链接:https://leetcode.com/problems/clone-graph/
题目:
Clone an undirected graph. Each node in the graph contains a
OJ's undirected graph serialization:
Nodes are labeled uniquely.
We use
a separator for node label and each neighbor of the node.
As an example, consider the serialized graph
The graph has a total of three nodes, and therefore contains three parts as separated by
First node is labeled as
both nodes
Second node is labeled as
node
Third node is labeled as
node
Visually, the graph looks like the following:
思路:
BFS/DFS ,因为标签唯一,所以用Map保存对应关系,这里用dfs递归拷贝新节点。
算法:
题目:
Clone an undirected graph. Each node in the graph contains a
labeland a list of its
neighbors.
OJ's undirected graph serialization:
Nodes are labeled uniquely.
We use
#as a separator for each node, and
,as
a separator for node label and each neighbor of the node.
As an example, consider the serialized graph
{0,1,2#1,2#2,2}.
The graph has a total of three nodes, and therefore contains three parts as separated by
#.
First node is labeled as
0. Connect node
0to
both nodes
1and
2.
Second node is labeled as
1. Connect node
1to
node
2.
Third node is labeled as
2. Connect node
2to
node
2(itself), thus forming a self-cycle.
Visually, the graph looks like the following:
1 / \ / \ 0 --- 2 / \ \_/
思路:
BFS/DFS ,因为标签唯一,所以用Map保存对应关系,这里用dfs递归拷贝新节点。
算法:
Map<Integer, UndirectedGraphNode> sets = new HashMap<Integer, UndirectedGraphNode>(); public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node == null) return null; if(sets.containsKey(node.label)) return sets.get(node.label); UndirectedGraphNode newNode = new UndirectedGraphNode(node.label); sets.put(newNode.label, newNode); for (UndirectedGraphNode neighbor : node.neighbors) { newNode.neighbors.add(cloneGraph(neighbor)); } return newNode; }
相关文章推荐
- 5.31
- android studio如何修改包名
- rabbitmq 对多服务器p2p模式配置的一个测试
- 【Leetcode】Permutation Sequence
- Archlinux MySQL PHP phpmyadmin Apache PHP-Apache Install
- linux 解决man命令输出到文档打开乱码问题
- iOS存储数据的几种方式
- 【Leetcode】3Sum
- 【C语言】06-基本数据类型
- 【Leetcode】Unique Binary Search Trees II
- 【Leetcode】Maximal Square
- 【Leetcode】Range Sum Query 2D - Immutable
- Python基础入门
- 根据网卡所在的硬件接口设置IP地址
- MySQL 性能优化的最佳20多条经验分享
- linux中设置环境变量PATH的方法(转)
- spring-boot 热部署 intellij IDE(开发过程)
- QT学习笔记
- man php怎么打开
- 密码学基础之base编码家族介绍