【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析

复制复杂链表


文章目录


一、题目

❄️题目指路:138. 复制带随机指针的链表 - 力扣(LeetCode) (leetcode-cn.com)

【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析

示例1为例展开分析

【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析


二、思路分析

如果只是简单的复制,那么很简单

但题目要求复制链表中的指针都不应指向原链表中的节点

这就要求我们需要malloc出和原链表相同的节点

而我们能做到的只是将新的节点链接起来,至于像原链表那样链接方式,却无法做到,因为新的链表不知道random是第几位

我们需要原链表的一个映射,去找到那个关系
【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析

⛄️第一步代码:

struct Node* copyRandomList(struct Node* head) {
    struct Node* cur = head;
    while(cur)
    {
        struct Node* copy = (struct Node*)malloc(sizeof(struct Node));
        copy->val = cur->val;
        copy->next = cur->next;
        cur->next = copy;
        cur = copy->next;
    }
}

我们发现copy需要的random就是上一个节点->random->next

上一篇:关于 Dockerfile 中 COPY 文件的问题


下一篇:Linux查找当前目录下包含部分内容的文件,并且copy到指定路径的简单方法