首页 > 其他分享 >剑指 Offer 35. 复杂链表的复制

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

时间:2023-07-21 22:24:11浏览次数:36  
标签:Node map cur val Offer 35 next 链表

题目:

/*
// Definition for a Node.
class Node {
public:
    int val;
    Node* next;
    Node* random;
    
    Node(int _val) {
        val = _val;
        next = NULL;
        random = NULL;
    }
};
*/
class Solution {
public:
    Node* copyRandomList(Node* head) {
        if(head==NULL) return NULL;
        Node* cur=head;
        unordered_map<Node*,Node*> map;           //本题首先想到用unordered_map建立映射关系来复制和重构链表
        while(cur){
            map[cur]=new Node(cur->val);          //建立每一个节点的映射,map[cur]是键,new Node(cur->val)是对应的值
            cur=cur->next;
        }
        cur=head;
        while(cur){
            map[cur]->next=map[cur->next];         //重构新链表next指向
            map[cur]->random=map[cur->random];     //重构新链表random指向
            cur=cur->next;
        }
        return map[head];
    }
};

以上代码方法转自力扣评论区

标签:Node,map,cur,val,Offer,35,next,链表
From: https://www.cnblogs.com/fly-smart/p/17572498.html

相关文章

  • go 循环链表
    packagemainimport("fmt")typeNodestruct{DataintNext*Node}typeCircularLinkedListstruct{Head*NodeTail*Node}funcNewCircularLinkedList()*CircularLinkedList{return&CircularLinkedList{}}func(l......
  • P9352 题解
    problem&blog。HerryHuang的DP专题中最喜欢的一题,抢第一篇题解/fendou。关于题意:只有往猫那里扔路障,猫才会动,否则只会原地坐牢。猫如果要走动,是一下子走到最高点,而不是慢慢挪动。假设猫在\(u\)点。现在往\(u\)扔路障,猫会跑去最高点,然后他无法返回到\(u\)的其他子......
  • HJ48 从单向链表中删除指定值的节点
    1.题目读题 HJ48 从单向链表中删除指定值的节点 考查点 这道题的考查点是单向链表的删除操作,主要是考察你能否掌握以下几个方面:如何遍历链表,找到要删除的节点或其前驱节点。如何修改节点的指针域,使其跳过要删除的节点。如何释放要删除的节点的内存空间,防止内存泄......
  • 咚咚咚————【封装驱动】Si5351A方波信号发生器发送任意(8K-160Mhz)频率程序
    咚咚咚————【封装驱动】Si5351A方波信号发生器发送任意[8K-160Mhz]频率程序(一)效果展示(二)源码分享(三)需要改进的地方及不足(使用阿波罗STM32F7开发板)(一)效果展示(二)源码分享芯片SI5351A源代码下载可以支持一下吗QAQSI5351A.c/*****************......
  • Si5351时钟芯片控制
    Si5351一、SI5351频率计算公式:f(out)=f(pl......
  • 剑指 Offer 18. 删除链表的节点
    题目:(有改动和陷阱,不可以使用delete否则报错!!)classSolution{public:ListNode*deleteNode(ListNode*head,intval){ListNode*fhead=newListNode(0);#设置虚拟头节点fhead->next=head;ListNode*cur=fhead;while(cur-......
  • 剑指 Offer 24. 反转链表
    题目:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*reverseList(ListNode*head){ListNode*temp......
  • 剑指 Offer 06. 从尾到头打印链表
    题目:/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:vector<int>reversePrint(ListNode*head){vecto......
  • 剑指offer_20230719
    剑指Offer24.反转链表题目说明定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。解题思路1:栈解题思路2:递归如果从后往前看的话,其实可以这样理解。如果当前处于nk,那么就另nk.next.next=nk,并且将nk.next指向空即可。处理完之后,以nk为头节点的链表其......
  • 剑指offer_20230720
    剑指Offer59-I.滑动窗口的最大值题目说明给定一个数组nums和滑动窗口的大小k,请找出所有滑动窗口里的最大值。示例:输入:nums=[1,3,-1,-3,5,3,6,7],和k=3输出:[3,3,5,5,6,7]解释:滑动窗口的位置最大值[13-1]-35367 ......