随机链表的复制

题目链接

链接: 随机链表的复制

题目要求

**简单来说就是复刻出和示例一个一模一样的链表结构 **

解题思路

  1. 遍历链表 : 把原链表的每个节点的值 复制到要深拷贝链表的每个节点 并把 原链表的节点作为 key 要进行深拷贝链表的节点作为 val put 到 map 中
  2. 第二遍遍历,通过操作map.get(原链表节点)得到 val 也就是 需要深拷贝链表节点 来完成 next 和 randem 指针对应位置的连接

代码实现

java 复制代码
 public Node copyRandomList(Node head) {
        Map<Node, Node> map = new HashMap<Node, Node>();
        Node cur = head;
        //复制 值
        while(cur != null){
            Node newNode = new Node(cur.val);
            map.put(cur, newNode);
            cur = cur.next;
        }
        cur = head;
        //复制 next 和 randem 的指向
        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);
    }
相关推荐
考虑考虑3 小时前
JDK26中的List.ofLazy()
java·后端·java ee
小蒜学长3 小时前
基于SpringBoot的公寓报修管理系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·公寓报修管理系统·多角色协同
for_ever_love__4 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
小π军6 小时前
操作系统面试题
java·linux·服务器
倔强的石头1066 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
Shaoshing7 小时前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼7 小时前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋
鱼宵7 小时前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai
蜗牛互联网7 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python