zoukankan      html  css  js  c++  java
  • [leetCode] 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 list.

    思路:首先将原链表复制一个新节点并连接到所复制的节点后面,然后在这样的链表上链接复制节点的random指针。最后分拆链表

       时间复杂度O(n),空间复杂度O(1)

     1 /**
     2  * Definition for singly-linked list with a random pointer.
     3  * struct RandomListNode {
     4  *     int label;
     5  *     RandomListNode *next, *random;
     6  *     RandomListNode(int x) : label(x), next(NULL), random(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     RandomListNode *copyRandomList(RandomListNode *head) {
    12         if (head == NULL) return head;
    13         
    14         //复制节点
    15         for (RandomListNode *curr = head; curr != NULL;) {
    16             RandomListNode *pter = new RandomListNode(curr->label);
    17             pter->next = curr->next;
    18             curr->next = pter;
    19             curr = pter->next;
    20         }
    21         
    22         //链接random指针
    23         for(RandomListNode *curr = head; curr != NULL;) {
    24             if (curr->random != NULL) {
    25                 curr->next->random = curr->random->next;
    26             }
    27             curr = curr->next->next;
    28         }
    29         
    30         //分拆链表
    31         RandomListNode *new_head = head->next;
    32         for (RandomListNode *curr = head, **new_curr = &new_head; curr != NULL;) {
    33             *new_curr = curr->next;
    34             curr->next = curr->next->next;
    35             
    36             curr = curr->next;
    37             
    38             new_curr = &((*new_curr)->next);
    39         }
    40         
    41         return new_head;
    42     }
    43 };
  • 相关阅读:
    Windows 7任务栏图标特别说明
    Linux下send函数 Broken pipe错误的解决方法
    C++实现一个简单的异常日志记录类
    C++写日志操作
    VC中设置打开文件的权限为管理员权限
    MFC 注册热键
    监控Tomcat状态及配置AIO(APR)模式
    Tomcat管理功能使用及WEB站点部署
    Tomcat多实例配置
    基于端口主机的虚拟主机
  • 原文地址:https://www.cnblogs.com/vincently/p/4071991.html
Copyright © 2011-2022 走看看