• [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 };
  • 相关阅读:
    C语言I博客作业02
    C语言I博客作业06
    C语言I—2019秋作业第一周作业
    C语言I博客作业09
    C语言I博客作业07
    C语言I博客作业08
    利用 jrebel 热部署\远程调试\远程热部署 springboot项目 服务器上的代码
    java 双因素认证(2FA)TOTP demo
    java File读取文件始终不存在的问题分析
    exchange 2010 的两个错误
  • 原文地址:https://www.cnblogs.com/vincently/p/4071991.html
Copyright © 2020-2023  润新知