当前位置: 首页 > news >正文

力扣——随机链表的复制

题目链接:

链接

题目描述:

在这里插入图片描述
在这里插入图片描述

思路:

思路一

利用map,先把val复制到新的node,再把关系复制到node,
key是旧的node,value是新的node
在这里插入图片描述

思路二

不复制在map里,而是直接复制在链表里,相当于插入一个新的node,插入后就会知道原本节点的next,但是不知道random,所以还需要再遍历一次找到random,最后拆分两个链表

实现代码:

class Solution {
    public Node copyRandomList(Node head) {
        Node cur = head;
        Map<Node,Node> map= new HashMap<>();
        while(cur != null){
            map.put(cur,new Node(cur.val));
            cur = cur.next;
        }
        cur = head;
        while(cur != null){
            map.get(cur).next = map.get(cur.next);
            map.get(cur).random = map.get(cur.random);
            cur = cur.next;
        }
        return map.get(head);
    }
}
class Solution {
    public Node copyRandomList(Node head) {
        if(head==null){
            return head;
        }
        //复制插入
        Node cur = head;
        while(cur != null){
            Node tmp = cur.next;
            cur.next = new Node(cur.val);
            cur.next.next = tmp;
            cur = tmp;
        }
        //找random
        cur = head;
        while(cur != null){
            if(cur.random != null){
                cur.next.random = cur.random.next;
            }
            cur = cur.next.next;
        }
        //拆分
        Node ans = head.next, pre = head;
        cur = head.next;
        while(cur.next != null){
            pre.next = pre.next.next;
            cur.next = cur.next.next;
            pre = pre.next;
            cur = cur.next;
        }
        pre.next = null;
        return ans;
    }
}

相关文章:

  • 界面组件DevExpress WPF中文教程:Grid - 如何显示嵌套栏(Bands)?
  • 基于ssm的宠物医院信息管理系统(全套)
  • Linux操作系统版本介绍
  • SpringCloud 学习笔记1(Spring概述、工程搭建、注册中心、负载均衡、 SpringCloud LoadBalancer)
  • QT编程之HTTP服务端与客户端技术
  • android lmkd.rc 介绍
  • 深度研究deep-research优秀开源项目
  • ABC 375
  • Android菜单栏
  • 网络爬虫-2:正则化
  • C#通过API接口返回流式响应内容---分块编码方式
  • 【计算机网络通信 AMQP】使用 Qt 调用 qamqp 库进行 AMQP 通信
  • DeepLabv3+改进11:在主干网络中添加CPCA注意力机制|聚焦于信息丰富的通道和重要区域
  • 基尔霍夫定律课后学习日志
  • 如何使用HACS一键集成米家与果家设备到HomeAssistant玩转智能家居
  • 【LInux】线程thread从内核原理到C++封装
  • Java泛型是什么?有什么作用?
  • 【一起来学kubernetes】8、k8s中的Ephemeral-Storage详解
  • 【QT:信号和槽】
  • MySQL(事物上)
  • 美国务卿与以色列总理通话,讨论加沙局势
  • 工人日报:应对“职场肥胖”,健康与减重同受关注
  • 官方通报汕头违建豪宅“英之园”将强拆:对有关人员严肃追责问责
  • 广西壮族自治区政府主席蓝天立任上被查
  • 女子七年后才知银行卡被盗刷18万元,警方抓获其前男友
  • 30平米的无障碍酒吧里,我们将偏见折叠又摊开