LintCode复制带随机指针的链表

原创 2015年07月09日 12:52:01

中等 复制带随机指针的链表

27%
通过

给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。

返回一个深拷贝的链表。 

用了一个哈希表,空间换取时间

/**
 * 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:
    /**
     * @param head: The head of linked list with a random pointer.
     * @return: A new head of a deep copy of the list.
     */
    RandomListNode *copyRandomList(RandomListNode *head) {
        // write your code here
        if(head == nullptr) {
            return nullptr;
        }
        RandomListNode * fhead = head;
        map<RandomListNode*,RandomListNode*> m;
        RandomListNode *p = new RandomListNode(head->label);
        m.insert(pair<RandomListNode*,RandomListNode*>(head,p));
        head = head->next;
        RandomListNode *root = p;
        while (head!=nullptr) {
            p->next = new RandomListNode(head->label);
            p = p->next;
            m.insert(pair<RandomListNode*,RandomListNode*>(head,p));
            head = head->next;
        }
        p = root;
        map<RandomListNode*, RandomListNode*>::iterator iter;  
       while (fhead!=nullptr) {
           if(fhead->random != nullptr) {
              iter = m.find(fhead->random);
              p->random = iter->second;   
           }
            p=p->next;
           fhead = fhead->next;
       }
        
    return root;
    }
};


LintCode(105) 复制带随机指针的链表

题目  复制带随机指针的链表 给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。 返回一个深拷贝的链表。  ...
  • fly_yr
  • fly_yr
  • 2016年06月07日 21:44
  • 2208

LintCode(M) 复制带随机指针的复杂链表

复制带随机指针的链表描述 笔记 数据 评测 给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。返回一个深拷贝的链表。 您在真实的面试中是否遇到过这个题?...

lintcode,复制带随机指针的链表

给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。 返回一个深拷贝的链表。 挑战 可否使用O(1)的空间解题思路:O(n)O(n)的思路是用map复制节点,...
  • zsjmfy
  • zsjmfy
  • 2016年12月18日 00:21
  • 111

LintCode 105-复制带随机指针的链表

本人电子系,只为一学生。心喜计算机,小编以怡情。给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。返回一个深拷贝的链表。 解答思路:既然给了一个random指针,那么...

复制一个带随机指针的链表

阿里巴巴测试开发校招二面的一个面试题 一个单链表除了next指针外,还带有一个随机指针(设为rand)指向任意元素,用最少的时间复杂度和最少的空间复制该链表。 开始想了很久,只想到一个O(n^2)...

题目:复制带随机指针的链表

 给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。 返回一个深拷贝的链表。 您在真实的面试中是否遇到过这个题? Yes ...
  • cumt_cx
  • cumt_cx
  • 2015年09月21日 09:46
  • 263

带随机指针的链表复制问题

一个链表问题:复制带随机指针的链表     题目:有一个链表L,其每个节点有2个指针,一个指针next指向链表的下个节点,另一个random随机指向链表中的任一个节点,可能是自己或者为空,写一个程...

复制带随机指针的链表

有一个链表List,其每个节点有2个指针,一个指针next指向链表的下个节点,另一个random随机指向链表中的任一个节点,可能是自己或者为空,写一个程序,要求复制这个链表的结构并分析其复杂性。 L...

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

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

如何复制一个含有随机指针节点的链表

如何复制一个含有随机指针节点的链表方法总结
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LintCode复制带随机指针的链表
举报原因:
原因补充:

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