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



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

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

题目: A linked list is given such that each node contains an additional random pointer which coul...
  • u012249528
  • u012249528
  • 2015年07月28日 21:32
  • 955

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

【138-Copy List with Random Pointer(拷贝有随机指针的单链表)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  A linked list ...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月18日 06:26
  • 2188

[Leetcode 138] Copy List with Random Pointer

题目 复制带有随机指针的链表:一个单链表除了next指针外还有一个random指针随机指向任何一个元素(可能为空) 《剑指offer》上的面试题26 分析 代码...
  • yiting52
  • yiting52
  • 2015年07月27日 10:42
  • 980

leetcode_c++:哈希: Copy List with Random Pointer(138)

A linked list is given such that each node contains an additional random pointer which could point t...
  • mijian1207mijian
  • mijian1207mijian
  • 2016年07月06日 14:49
  • 111

链表-leetcode 138. Copy List with Random Pointer

原题链接:Copy List With Random Pointer 题解: /** * Definition for singly-linked list with a random poin...
  • Maxwell__726
  • Maxwell__726
  • 2017年07月01日 00:39
  • 155

Copy List with Random Pointer -- LeetCode

原题链接: http://oj.leetcode.com/problems/copy-list-with-random-pointer/  这是一道链表操作的题目,要求复制一个链表,不过链表的每个结...
  • linhuanmars
  • linhuanmars
  • 2014年03月29日 05:10
  • 12436

[Leetcode]138. Copy List with Random Pointer

A linked list is given such that each node contains an additional random pointer which could point t...
  • sunhero2010
  • sunhero2010
  • 2016年07月26日 17:42
  • 173

LeetCode——138. Copy List with Random Pointer

问题描述:A linked list is given such that each node contains an additional random pointer which could po...
  • Johnsonjjj
  • Johnsonjjj
  • 2017年10月13日 23:18
  • 50

leetcode题解-138. Copy List with Random Pointer

题目:A linked list is given such that each node contains an additional random pointer which could poin...
  • liuchonge
  • liuchonge
  • 2017年02月25日 15:40
  • 402

LeetCode 138. Copy List with Random Pointer

和LeetCode 133. Clone Graph一个意思, 深层拷贝意味着,对a进行拷贝,获得b, 使得b的成员变量不仅值与a中对应的成员变量相等,同时它们指向不同的内存空间。 维护一张map, ...
  • u014674776
  • u014674776
  • 2015年02月17日 13:20
  • 557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[leetcode] 【链表】 138. Copy List with Random Pointer
举报原因:
原因补充:

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