【第22期】观点:IT 行业加班,到底有没有价值?

[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...

LeetCode Copy List with Random Pointer 分析解答

Copy List with Random Pointer 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
  • bcyy
  • bcyy
  • 2013-11-05 11:55
  • 41

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 Copy List with Random Pointer 分析解答

Copy List with Random Pointer 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
  • jgsj
  • jgsj
  • 2013-11-05 11:55
  • 83

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

https://leetcode.com/problems/copy-list-with-random-pointer/description/ A linked list is...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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