Clone Graph
生活随笔
收集整理的這篇文章主要介紹了
Clone Graph
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
Clone an undirected graph. Each node in the graph contains a?label?and 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?#.
Visually, the graph looks like the following:
1/ \/ \0 --- 2/ \\_/方法
主要分兩步:第一步創建全部的結點。第二步,創建結點的neighbors /*** Definition for undirected graph.* class UndirectedGraphNode {* int label;* List<UndirectedGraphNode> neighbors;* UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); }* };*/ public class Solution {public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) {if (node == null) {return null;}Map<Integer, UndirectedGraphNode> map = new HashMap<Integer, UndirectedGraphNode>();Map<Integer, UndirectedGraphNode> graph = new HashMap<Integer, UndirectedGraphNode>();Queue<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>();queue.offer(node);while(!queue.isEmpty()) {UndirectedGraphNode temp = queue.poll();if (!map.containsKey(temp.label)) {UndirectedGraphNode newTemp = new UndirectedGraphNode(temp.label);graph.put(temp.label, temp);map.put(temp.label, newTemp);}for (UndirectedGraphNode neighbor : temp.neighbors) {if (!map.containsKey(neighbor.label)) {queue.offer(neighbor);}}}for (int label : graph.keySet()) {UndirectedGraphNode temp = graph.get(label);UndirectedGraphNode cloneTemp = map.get(temp.label);for (UndirectedGraphNode neighbor : temp.neighbors) {cloneTemp.neighbors.add(map.get(neighbor.label));}}return map.get(node.label);} }總結
以上是生活随笔為你收集整理的Clone Graph的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 借助二分法匹配时间戳实现快速查找日志内容
- 下一篇: Apache 2,4版本 编译与安装 R