剑指Offer—25—复杂链表的复制
2017-08-23 21:11
411 查看
复杂链表的复制 : 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head 。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
package A25复杂链表的复制; public class Solution { public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; } } public RandomListNode Clone(RandomListNode pHead){ // 思路:在源节点后面添加复制节点 if (pHead == null) { return null; } // 每个链表后面复制个点加上 1——2——3 → 1——1'——2——2'——3——3' RandomListNode rNode = pHead; while(rNode != null){ RandomListNode tNode = new RandomListNode(rNode.label); tNode.next = rNode.next; rNode.next = tNode; rNode = tNode.next; } // 每个原始点的random指向的节点,和复制的节点下一个相同 RandomListNode rNode2 = pHead; while(rNode2 != null){ if (rNode2.random != null) { rNode2.next.random = rNode2.random.next; } rNode2 = rNode2.next.next; } // 分割链表 RandomListNode pNode = pHead.next; RandomListNode tempNode = null; RandomListNode curNode = pHead; while(curNode.next != null){ tempNode = curNode.next; curNode.next = tempNode.next; curNode = tempNode; } return pNode; } }
相关文章推荐
- 剑指offer(25)—复杂链表的复制
- 剑指offer——25.复杂链表的复制
- 【剑指offer系列】 复杂链表的复制___26
- 剑指Offer_25_复杂链表的复制
- 剑指offer(22)-复杂链表的复制
- 《剑指offer》面试题26:复杂链表的复制
- (剑指Offer)面试题26:复杂链表的复制
- 剑指offer---复杂链表的复制
- 《剑指Offer》面试题26:复杂链表的复制
- 剑指offer 面试题26—复杂链表的复制
- 《剑指offer》:[26]复杂链表的复制
- 剑指offer:复杂链表的复制
- 剑指OFFER之复杂链表的复制(九度OJ1524)
- (C++)剑指offer-25:复杂链表的复制(分解让复杂问题简单)(再理解)
- 剑指offer_面试题26_复杂链表的复制
- 剑指Offer:复杂链表的复制
- 剑指offer题解C++【25】复杂链表的复制
- 25、复杂链表的复制
- 剑指offer系列源码-复杂链表的复制
- 《剑指offer》——复杂链表的复制