剑指offer--复杂链表的复制
2015-04-11 22:13
295 查看
题目描述
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。分类:链表,hash
解法1:第一次遍历链表,根据链表新建节点,同时保存链表节点到新建节点的映射,到一个hashmap
第二次链表,根据hashmap创建新建节点之间的特殊指针关系
/* public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; } } */ import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; import java.util.Set; 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); } }
相关文章推荐
- 剑指offer---复杂链表复制
- 剑指offer: 复杂链表的复制
- 剑指offer——面试题26:复杂链表的复制
- 剑指offer:复杂链表复制
- 剑指 offer代码解析——面试题26复杂链表的复制
- 剑指offer面试题[26]-复杂链表的复制
- 剑指offer--面试题26:复杂链表的复制
- 剑指offer-面试题26 复杂链表的复制
- 剑指offer:复杂链表的复制(java)
- 剑指offer——复杂链表的复制(还不错,空间优先法和时间优先法)
- 剑指Offer - 九度1524 - 复杂链表的复制
- 剑指 offer代码解析——面试题26复杂链表的复制
- 【剑指offer】面试题35:复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指offer 面试题26复杂链表的复制
- 剑指offer面试题26:复杂链表的复制
- 剑指offer-题26:复杂链表的复制
- 【剑指offer】复杂链表的复制
- 剑指offer——复杂链表的复制
- 【剑指Offer】复杂链表的复制