[LeetCode] Copy List with Random Pointer
来源:互联网 发布:淘宝 无忧退货 运费 编辑:程序博客网 时间:2024/04/29 15:32
Copy List with Random Pointer
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.
剑指OFFER上的题,中间 head->random 原来有可能是NULL,所以要添加一个判断,很坑。/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * RandomListNode *next, *random; * RandomListNode(int x) : label(x), next(NULL), random(NULL) {} * }; */class Solution {public: RandomListNode *copyRandomList(RandomListNode *head) { // Note: The Solution object is instantiated only once and is reused by each test case. if(!head) return NULL; cloneList(head); cloneRandomPtr(head); return removeClone(head); } void cloneList(RandomListNode* head) { while(head) { RandomListNode* toAdd=new RandomListNode(head->label); RandomListNode* pNext=head->next; toAdd->next=pNext; head->next=toAdd; head=pNext; } } void cloneRandomPtr(RandomListNode* head) { while(head) { if(head->random) head->next->random=head->random->next; head=head->next->next; } } RandomListNode* removeClone(RandomListNode* head) { RandomListNode guard(-1); RandomListNode* tail=&guard; while(head) { tail->next=head->next; tail=tail->next; head->next=head->next->next; head=head->next; } return guard.next; }};
- [leetcode][list] Copy List with Random Pointer
- Leetcode: Copy List with Random Pointer
- LeetCode: Copy List with Random Pointer
- [LeetCode] Copy List with Random Pointer
- [leetcode]Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- leetcode Copy List with Random Pointer
- LeetCode:Copy List with Random Pointer
- LeetCode题解:Copy List with Random Pointer
- [LeetCode]Copy List with Random Pointer
- leetcode Copy List with Random Pointer
- leetcode-Copy List with Random Pointer
- Leetcode: Copy List with Random Pointer
- LeetCode | Copy List with Random Pointer
- [LeetCode] Copy List with Random Pointer
- LeetCode OJ:Copy List with Random Pointer
- LeetCode(138)Copy List with Random Pointer
- [LeetCode] - Copy List with Random Pointer
- 最长公共子序列(LCS)和最长公共子串(LCSubString)
- 打造属于你自己的Mac 机器人助手
- 链表的操作
- 07-python_数据类型-字典
- windows 文件名太长无法删除的解决方法
- [LeetCode] Copy List with Random Pointer
- Leetcode: Reverse Linked List II
- 构造函数和析构函数
- Oracle DB 配置备份设置
- 08-python_流程控制-if
- 排序算法
- 【学习笔记】JavaScript(2013-10-05)
- nginx与php配置
- [JavaScript]functionexpression