2023-08-04力扣今日三题

链接:

剑指 Offer 35. 复杂链表的复制

题意:

如题

解:

看题研究了好一阵,指针map

实际代码:

#include
using namespace std;
class Node {
public:
    int val;
    Node* next;
    Node* random;
    
    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};
Node* copyRandomList(Node* head)
{
    if(head==nullptr) return nullptr;
    mapmp;
    Node* newhead=nullptr,*insertor=nullptr;
    while(head!=nullptr)
    {
        if(newhead==nullptr)
        {
            newhead=new Node(head->val);
            insertor=newhead;
        }
        else
        {
            insertor->next=new Node(head->val);
            insertor=insertor->next;
        }
        insertor->random=head->random;
        mp[head]=insertor;
        head=head->next;
    }
    insertor=newhead;
    while(insertor!=nullptr)
    {
        insertor->random=mp[insertor->random];
        insertor=insertor->next;
    }
    return newhead;
}
int main()
{
    
}

限制:

  • -10000 <= Node.val <= 10000
  • Node.random 为空(null)或指向链表中的节点。
  • 节点数目不超过 1000 。

你可能感兴趣的:(力扣每日一题,leetcode)