LeetCode OJ 之 Copy List with Random Pointer(复制含有随机指针的链表)
来源:互联网 发布:网络推广招聘 编辑:程序博客网 时间:2024/05/20 23:58
题目:
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.
一个链表的每个结点含有一个额外的指针指向链表中的任意结点或者指向空。深复制一个这样的链表并返回。
思路:
参考:http://blog.csdn.net/u012243115/article/details/45562505 。
代码:
/** * 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) { if(head == NULL) return NULL; //1、复制一个接在原结点后面 RandomListNode *p = head; while(p) { RandomListNode *copy = new RandomListNode(p->label);//新复制一个结点 RandomListNode *tmp = p->next;//临时保存当前结点的next p->next = copy;//把新复制的结点接到当前结点后面 copy->next = tmp; p = tmp; } //2、确定复制的结点的random p = head; while(p) { RandomListNode *copy = p->next; RandomListNode *tmp = p->next->next; if(p->random != NULL) copy->random = p->random->next;//确定新复制结点的random p = tmp; } //3、断开成两个完全相同的链表 p = head; RandomListNode *newHead = p->next , *p2 = newHead; while(p2) { p->next = p2->next; if(p2->next == NULL) break; p2->next = p2->next->next; p = p->next; p2 = p2->next; } return newHead; }};
0 0
- LeetCode OJ 之 Copy List with Random Pointer(复制含有随机指针的链表)
- Copy List with Random Pointer 复制有随机指针的链表@LeetCode
- 【LeetCode】138.Copy List with Random Pointer 复制带有随机指针的链表
- LeetCode之复制有random指针的链表Copy List with Random Pointer
- 【LeetCode-面试算法经典-Java实现】【143-Copy List with Random Pointer(有随机指针的链表复制)】
- 105.Copy List with Random Pointer-复制带随机指针的链表(中等题)
- LeetCode | Copy List with Random Pointer(赋值带有随机指针的链表)
- Copy List with Random Pointer 带随机指针链表的复制
- Copy List with Random Pointer复制带有随机指针的链表
- LeetCode138 Copy List with Random Pointer(深度复制带有随机指针的链表) Java题解
- [LintCode] 复制带随机指针的链表 Copy List with Random Pointer
- [LeetCode]—Copy List with Random Pointer 深度复制带“任意指针”的链表
- [LeetCode]Copy List with Random Pointer &Clone Graph 复杂链表的复制&图的复制
- 附有随机结点指针的链表的深度拷贝 Copy List with Random Pointer
- Copy List with Random Pointer 带随机指针的链表的拷贝
- LeetCode OJ:Copy List with Random Pointer
- LeetCode OJ - Copy List with Random Pointer
- LeetCode OJ Copy List with Random Pointer
- C++_运算符重载 总结
- Java:自定义注解详解
- SAT数学:练习题一道
- FMDB官方使用文档 G-C-D的使用 提高性能(翻译)
- 关于intelliJ idea14.1创建servlet提示cannot resolve symbol‘servlet’的问题
- LeetCode OJ 之 Copy List with Random Pointer(复制含有随机指针的链表)
- HEVC 学习简介
- JavaScript 基础
- gcc 参数 -fprofile-arcs -ftest-coverage作用
- C++9.3.5容器大小的操作
- JFileChooser (Java Swing提供的文件选择对话框)
- 一分钟掌握Android spinner下拉框
- 非计算机专业无实习项目相关性不大怎么拿到 BAT offer?
- 数字取值,精确到小数点后n位