zoukankan      html  css  js  c++  java
  • Copy List with Random Pointer leetcode

    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.

    Subscribe to see which companies asked this question

    1、在链表中依次插入新的结点
    2、构建新节点random指针:newNode->random = oldNode->random->next
    3、恢复原始链表以及构建新链表:例如old->next = old->next->next,  new->next = new->next->next
     
    RandomListNode *copyRandomList(RandomListNode *head) {
        if (head == nullptr)
            return nullptr;
        RandomListNode *iter = head;
        while (iter != nullptr)
        {
            RandomListNode *newNode = new RandomListNode(iter->label);
            newNode->next = iter->next;
            iter->next = newNode;
            iter = newNode->next;
        }
        iter = head;
        RandomListNode *iter1;
        while (iter != nullptr)
        {
            iter1 = iter->next;
            if(iter->random != nullptr)
                iter1->random = iter->random->next;
            iter = iter1->next;
        }
        RandomListNode *ret;
        ret = head->next;
        iter1 = ret;
        head->next = ret->next;
        iter = head->next;
        while (iter != nullptr)
        {
            iter1->next = iter->next;
            iter1 = iter1->next;
            iter->next = iter1->next;
            iter = iter->next;
        }
        return ret;
    }
  • 相关阅读:
    Makefile使用函数
    Makefile条件判断
    Makefile使用变量
    Makefile书写命令
    Makefile书写规则
    Makefile总述
    Makefile基础知识
    LEETCODE刷题 替换空格
    LEETCODE刷题 二维数组查找
    【Intellij IDEA 奇淫技巧】自动生成serialVersionUID的设置
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/5134463.html
Copyright © 2011-2022 走看看