[leetcode] 【链表】 138. Copy List with Random Pointer

原创 2016年06月02日 10:33:00

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;
    }
};



版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【138-Copy List with Random Pointer(拷贝有随机指针的单链表)】

【138-Copy List with Random Pointer(拷贝有随机指针的单链表)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  A linked list ...

LeetCode138 Copy List with Random Pointer(深度复制带有随机指针的链表) Java题解

题目: A linked list is given such that each node contains an additional random pointer which coul...

leetcode题解-138. Copy List with Random Pointer

题目:A linked list is given such that each node contains an additional random pointer which could poin...

【leetcode每日一题】138.Copy List with Random Pointer

题目: A linked list is given such that each node contains an additional random pointer which could ...

LeetCode 138. Copy List with Random Pointer

和LeetCode 133. Clone Graph一个意思, 深层拷贝意味着,对a进行拷贝,获得b, 使得b的成员变量不仅值与a中对应的成员变量相等,同时它们指向不同的内存空间。 维护一张map, ...

[Leetcode] 138. Copy List with Random Pointer 解题报告

题目: A linked list is given such that each node contains an additional random pointer which coul...

[leetcode] 138. Copy List with Random Pointer 解题报告

题目链接:https://leetcode.com/problems/copy-list-with-random-pointer/ A linked list is given such that...

Leetcode 133. Clone Graph & 138. Copy List with Random Pointer

因为自己是先做的138,先说138。 138. Copy List with Random Pointer Total Accepted: 64859 Total Submissions:...

Leetcode-138. Copy List with Random Pointer

题目A linked list is given such that each node contains an additional random pointer which could point...

leetcode 138. Copy List with Random Pointer

Description: A linked list is given such that each node contains an additional random pointer which...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 【链表】 138. Copy List with Random Pointer
举报原因:
原因补充:

(最多只允许输入30个字)