随机链表的复制

题目链接

链接: 随机链表的复制

题目要求

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

解题思路

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

代码实现

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);
    }
相关推荐
jvmind_dev14 分钟前
SWT 堆外内存泄漏排查实录:一次 PNG 保存泄漏一张图,一行 g_free 治好
java·后端
CodeStats16 分钟前
《源纹天书》第三百四十六章至第三百五十章:边界的扩张、跨宇宙通信的尝试、其他宇宙的回应、新网络的形成、宇宙网络的创始者!
java·源纹天书
古法安卓1 小时前
Android-显示流程
android·java·android studio
l1t2 小时前
DeepSeek总结的DuckDB 如何更快地运行递归 CTE
java·开发语言·数据库·mysql·duckdb
小手cool2 小时前
使用递归对数组进行反转操作
java·数据结构·算法
MetaLite2 小时前
SpringBoot分页接口怎么设计-pageSize不设上限会发生什么
java·spring boot·后端
晚安code2 小时前
LangChain4j AiService 实战:会话记忆与结构化输出
java·langchain
晚安code3 小时前
LangChain4j 实战:RAG、工具调用、护轨与 SSE 流式输出
java·langchain
郑州光合科技余经理3 小时前
本地生活平台搭建:统一订单表与多后台切换怎么拆
java·开发语言·前端·系统架构·uni-app·php·ai编程