leetcode138. 复制带随机指针的链表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode138. 复制带随机指针的链表相关的知识,希望对你有一定的参考价值。
题目的意思比较难理解,分为3步。第一步建立二重链表,第二步random指针的建立,第三步拆分二重链表。
/* // Definition for a Node. class Node { public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; } }; */ class Solution { public: Node* copyRandomList(Node* head) { if(head==NULL) return {}; Node*st=head; while(st!=NULL)//生成二重链表 { Node*temp=new Node(st->val); temp->next=st->next; st->next=temp; st=st->next->next; } st=head; Node* pt,*temp; //处理random指针 while(st!=NULL) { pt=st->next; if(pt!=NULL&&st->random!=NULL) pt->random=st->random->next; st=st->next->next; } //重新穿针引线,处理链表顺序 Node *pre,*cur,*next,*res; pre=head; while(pre!=NULL) { if(pre==head) { res=pre->next; } cur=pre; if(pre->next!=NULL) pre=pre->next->next; next=cur->next; cur->next=pre; if(pre!=NULL) next->next=pre->next; } return res; } };
以上是关于leetcode138. 复制带随机指针的链表的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 138. 复制带随机指针的链表c++/java详细题解
LeetCode Algorithm 138. 复制带随机指针的链表