[刷题]Clone Graph
来源:互联网 发布:淘宝优惠券在哪里看 编辑:程序博客网 时间:2024/06/14 10:35
[LintCode]Clone Graph
/** * Definition for undirected graph. * class UndirectedGraphNode { * int label; * ArrayList<UndirectedGraphNode> neighbors; * UndirectedGraphNode(int x) { label = x; neighbors = new ArrayList<UndirectedGraphNode>(); } * }; */public class Solution { /** * @param node: A undirected graph node * @return: A undirected graph node */ public UndirectedGraphNode cloneGraph(UndirectedGraphNode node) { // 2015-07-01 if (node == null) { return null; } HashMap<UndirectedGraphNode, UndirectedGraphNode> map = new HashMap<>(); ArrayList<UndirectedGraphNode> nodes = new ArrayList<>(); // step 1 遍历图,开辟内存,建立哈希表,新旧节点一一对应 nodes.add(node); map.put(node, new UndirectedGraphNode(node.label)); for (int i = 0; i < nodes.size(); i++) { UndirectedGraphNode head = nodes.get(i); int len = head.neighbors.size(); for (int j = 0; j < len; j++) { UndirectedGraphNode neighbor = head.neighbors.get(j); if (!map.containsKey(neighbor)) { nodes.add(neighbor); map.put(neighbor, new UndirectedGraphNode(neighbor.label)); } } } // step 2 遍历哈希表,为每一个新的节点添加neighbors int len = nodes.size(); for (int i = 0; i < len; i++) { UndirectedGraphNode oldNode = nodes.get(i); UndirectedGraphNode newNode = map.get(oldNode); for (int j = 0; j < oldNode.neighbors.size(); j++) { newNode.neighbors.add(map.get(oldNode.neighbors.get(j))); } } return map.get(node); }}
0 0
- [刷题]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
- 【莫比乌斯反演】【bzoj2301】problem b
- 编写测试用例
- Rotate Array
- PLSQL developer 连接不上64位Oracle 的解决方法
- 仿51用车 Ipad版
- [刷题]Clone Graph
- 黑马-类名类型 *指针名称 = 【类名 new】和消息机制
- 逆序对数
- [组合]Bzoj1008 越狱[HNOI2008]
- Stanford UFLDL教程 主成分分析(PCA)
- 多媒体总结
- 对Navigation基础的了解
- PortQry
- Android Busybox 下的adb,linux shell命令整理备忘 (2012-03-06 21:41:27)