[LintCode] 复制带随机指针的链表 Copy List with Random Pointer
来源:互联网 发布:捕鱼机核心算法 编辑:程序博客网 时间:2024/06/05 05:53
给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。
返回一个深拷贝的链表。
挑战
可否使用O(1)的空间
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
Challenge
Could you solve it with O(1) space?
思路参考:http://www.cppblog.com/yuech/archive/2011/04/02/143318.html
/** * Definition for singly-linked list with a random pointer. * class RandomListNode { * int label; * RandomListNode next, random; * RandomListNode(int x) { this.label = x; } * }; */public class Solution { /** * @param head: The head of linked list with a random pointer. * @return: A new head of a deep copy of the list. */ public RandomListNode copyRandomList(RandomListNode head) { RandomListNode p = head; while(p != null) {//深拷贝节点 RandomListNode q = new RandomListNode(p.label); q.next = p.next; p.next = q; p = q.next; } p = head; while(p != null) {//复制随机链接 if(p.random != null) p.next.random = p.random.next; else p.next.random = null; p = p.next.next; } p = head; RandomListNode q = head.next, result = head.next; while(q.next != null) {//恢复原链表和深拷贝链表 p.next = q.next; p = p.next; q.next = p.next; q = q.next; } return result; }}
0 0
- [LintCode] 复制带随机指针的链表 Copy List with Random Pointer
- Copy List with Random Pointer 带随机指针链表的复制
- 105.Copy List with Random Pointer-复制带随机指针的链表(中等题)
- Copy List with Random Pointer 复制有随机指针的链表@LeetCode
- Copy List with Random Pointer复制带有随机指针的链表
- LeetCode OJ 之 Copy List with Random Pointer(复制含有随机指针的链表)
- LeetCode138 Copy List with Random Pointer(深度复制带有随机指针的链表) Java题解
- 【LeetCode】138.Copy List with Random Pointer 复制带有随机指针的链表
- Copy List with Random Pointer 带随机指针的链表的拷贝
- [LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表
- 【LeetCode-面试算法经典-Java实现】【143-Copy List with Random Pointer(有随机指针的链表复制)】
- LeetCode之复制有random指针的链表Copy List with Random Pointer
- 附有随机结点指针的链表的深度拷贝 Copy List with Random Pointer
- LeetCode | Copy List with Random Pointer(赋值带有随机指针的链表)
- [LeetCode]Copy List with Random Pointer &Clone Graph 复杂链表的复制&图的复制
- LintCode - Copy List with Random Pointer
- [Lintcode]Copy List with Random Pointer
- [Lintcode] 105. Copy List with Random Pointer
- linux pexpect自动登录交换机保存配置
- 阿里巴巴集团CTO张建锋:将开放阿里的技术能力
- mysql 建立procedure总是报错
- 2SAT hdu3062 Party
- 编程小技巧
- [LintCode] 复制带随机指针的链表 Copy List with Random Pointer
- AssetsLibrary
- C++存储类别
- 鲁肃:蚂蚁金服的三个梦想
- 具有内存分配的类的引用作形参
- Python编程-字符串的编码转换、存储及乱码问题
- ubuntu进入root模式
- 第11章 公共资源和公共物品
- 具有拷贝构造函数的类作形参