博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Copy List with Random Pointe
阅读量:7102 次
发布时间:2019-06-28

本文共 1755 字,大约阅读时间需要 5 分钟。

题目的关键是要让新链表和原有链表发送关联,可以通过这种关联来设置新链表的random pointer

思路:将新链表的元素插入到原有链表元素的后面,如下图所示,就可以根据原有链表的radom->next 就是新链表的random指针

所以分3步骤:

1 新元素插入

2 设置新链表的random

3 拆分大链表,回复old link 和new link

 

1 /** 2  * Definition for singly-linked list with a random pointer. 3  * struct RandomListNode { 4  *     int label; 5  *     RandomListNode *next, *random; 6  *     RandomListNode(int x) : label(x), next(NULL), random(NULL) {} 7  * }; 8  */ 9  10 class Solution {11 public:12     RandomListNode *copyRandomList(RandomListNode *head) {13         14         RandomListNode* pOld = head;15         RandomListNode* pNew = NULL;16         RandomListNode* pRes = NULL;17         18         if(head == NULL) return NULL;19         20         // insert every new node after old new node21         while(pOld)22         {23             pNew = new RandomListNode(pOld->label);24             if(pOld == head) pRes = pNew;25             pNew->next = pOld->next;26             pOld->next = pNew;27             pOld = pNew->next;28         }29         30 31         pOld = head;32         // constrct new's random pointer33         while(pOld)34         {35             pNew = pOld->next;36             if(pOld->random == NULL)37                 pNew->random == NULL;38             else 39                 pNew->random = pOld->random->next;40             pOld = pNew->next;41         }42 43 44         // recover old's and new's next pointer45         //恢复old list 和new list46   47         pOld = head;48         49         while(pOld)50         {51             pNew = pOld->next;52             if(pNew == NULL)53                 pOld->next = NULL;54             else55                 pOld->next = pNew->next;56             pOld = pNew;57         }58 59         return pRes;   60     }61 };

 

 

转载地址:http://jichl.baihongyu.com/

你可能感兴趣的文章
各种jar包下载地址
查看>>
HP P2000配置手册
查看>>
iOS视频教程【福利分享】
查看>>
SQL SERVER 数据类型 (转)
查看>>
linux工作常用命令
查看>>
博客系统 01 登录退出
查看>>
机试题
查看>>
客户端与服务器
查看>>
cookie
查看>>
Android Matrix
查看>>
JS实现OO机制
查看>>
约瑟夫问题
查看>>
python笔记第十天 模块
查看>>
自动办公系统
查看>>
asp.net mvc 3 unobtrusive client side validation not working in IE
查看>>
二.自动化接口测试---用例设计思路、模版
查看>>
svn项目冲突时显示无法加载项目的解决方法
查看>>
2019-4-22 jdbc学习笔记
查看>>
7 行代码优雅地实现 Excel 文件导出功能?
查看>>
thinkphp3.2.3 无法调用带下划线的模型
查看>>