14.1 Clone Graph
来源:互联网 发布:软件许可授权书 编辑:程序博客网 时间:2024/05/19 10:09
Link: https://oj.leetcode.com/problems/clone-graph/
Approach I: BFS
My first attempt: //Code is not correct.
public class Solution { public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { LinkedList<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>(); queue.add(node); while(!queue.isEmpty()){ UndirectedGraphNode n = queue.poll(); UndirectedGraphNode newNode = new UndirectedGraphNode(n.label); ArrayList<UndirectedGraphNode> list = new ArrayList<UndirectedGraphNode>(); for(UndirectedGraphNode neighbor : n.neighbors){ list.add(neighbor); queue.add(neigbhor); } newNode.neighbors = new ArrayList<UndirectedGraphNode>(list); } return newNode; }}
Correct Answer:
public class Solution { public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { if(node == null) return null; LinkedList<UndirectedGraphNode> queue = new LinkedList<UndirectedGraphNode>(); HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<UndirectedGraphNode, UndirectedGraphNode>(); UndirectedGraphNode copy = new UndirectedGraphNode(node.label); map.put(node, copy); queue.add(node); while(!queue.isEmpty()){ UndirectedGraphNode cur = queue.poll(); for(int i = 0; i < cur.neighbors.size(); i++){ UndirectedGraphNode neighbor = cur.neighbors.get(i); if(!map.containsKey(neighbor)){ copy = new UndirectedGraphNode(neighbor.label); map.put(neighbor, copy); queue.add(neighbor); } map.get(cur).neighbors.add(map.get(neighbor));//map.get(cur) is the copy of cur } } return map.get(node); }}Approach II: DFS
Just replace queue by stack???
0 0
- 14.1 Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- Clone Graph
- AsyncTask
- ajax跨域请求--jsonp实例
- Eclipse手动配置xml自动加载
- 手机web——自适应网页设计(html/css控制)
- Androidsqllite数据库
- 14.1 Clone Graph
- barrier 和 preempt_disable() 学习
- Fire Game
- 设置器、访问器与点语法
- 敏捷开发之如何打造敏捷团队--学习讨论会总结
- 广州滁州做网站,常州网站建设-梦想瞬智网络科技
- postgresql命令
- Java栈与堆的区别
- VS2010/MFC编程入门教程之目录和总结