[leetcode] 【链表】 138. Copy List with Random Pointer
来源:互联网 发布:办公楼网络布线图 编辑:程序博客网 时间:2024/06/06 09:46
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.
题意
一个链表包含额外的随机指针,这个指针指向任意节点或空。
复制这个链表。
题解
分三步:
1、复制链表值及顺序,我这里使用的方法是在每个节点后加一个一样的节点
2、复制random指针,因为第一步中,拷贝的节点放在当前结点后面,所以可以这么实现 cur->next->random=cur->random->next
3、把两个链表分开即可。
/** * 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) { for(RandomListNode *cur=head;cur;) { RandomListNode *node=new RandomListNode(cur->label); node->next=cur->next; cur->next=node; cur=node->next; } for(RandomListNode *cur=head;cur;) { if(cur->random!=NULL) cur->next->random=cur->random->next; cur=cur->next->next; } RandomListNode newhead(-1); for(RandomListNode *cur=head,*newlist=&newhead;cur;) { newlist->next=cur->next; cur->next=cur->next->next; newlist=newlist->next; cur=cur->next; } return newhead.next; }};
0 0
- LeetCode 138. Copy List with Random Pointer
- [Leetcode] 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- [leetcode] 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- leetcode.138. Copy List with Random Pointer
- LeetCode-138.Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- [Leetcode]138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- [LeetCode] 138. Copy List with Random Pointer
- [LeetCode]138. Copy List with Random Pointer
- LeetCode 138. Copy List with Random Pointer
- Leetcode-138. Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- leetcode 138. Copy List with Random Pointer
- Leetcode 138. Copy List with Random Pointer
- Android通用的搜索框
- mysql 数据类型
- /bin,/sbin,/usr/sbin,/usr/bin 目录
- SQL中的cast()和convert()函数
- 简化原生效果_集成UITableViewCell左滑多个按钮
- [leetcode] 【链表】 138. Copy List with Random Pointer
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- iOS Plus屏幕 AlerController报错
- RT-Thread的I/O设备模块及其驱动实现步骤
- Linux系统用户账号的管理
- 打造Android集合控件数据绑定(支持添加监听,支持AbsListView与RecycleView,支持异步加载等)(三)具体实现
- Eclipse快捷键-方便查找
- 求0至大数之间的随机数
- 禁用VS2010的IntelliSense