复杂链表的复制
2015-10-19 09:12
411 查看
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。
import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; /* public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; } } */ public class Solution { public RandomListNode Clone(RandomListNode pHead) { HashMap<RandomListNode,RandomListNode> map = new HashMap<RandomListNode,RandomListNode>(); RandomListNode p = pHead; RandomListNode q = new RandomListNode(-1); while(p!=null){ RandomListNode t = new RandomListNode(p.label); map.put(p, t); p = p.next; q.next = t; q = t; } Set<Entry<RandomListNode,RandomListNode>> set = map.entrySet(); Iterator<Entry<RandomListNode,RandomListNode>> it = set.iterator(); while(it.hasNext()){ Entry<RandomListNode, RandomListNode> next = it.next(); next.getValue().random = map.get(next.getKey().random); } return map.get(pHead); } }
相关文章推荐
- 在.net中使用ETW事件的方法
- 软件工程:需求分析的20条法则
- bash: ifconfig: command not found 解决办法
- poj2299 分治
- 好博客搜集
- 二叉搜索树的后序遍历序列
- 关于Qt版本与安装
- (一期)Alcatraz+XToDo+ESJsonFormat+MOBSMS+TouchID
- 虚拟机出现“内部错误”捉鬼
- Linux的路由和策略路由
- MapServer 之 mapfile 配置文件
- 好想睡个整夜觉
- 经验小结
- java--通过socket和多线程进行多个客服端与服务器的简单通讯--基于tcp
- 面向对象,继承和接口的使用理解
- Linux GCC常用命令
- 深入理解Ajax原理
- typedef struct 小结
- 基础篇(二) Activity启动模式(launchMode)
- LUA中的and与or