力扣138. 随机链表的复制

Problem: 138. 随机链表的复制

文章目录

题目描述

思路及解法

1.创建Map集合Map<Node, Node> map;创建指针cur指向head;

2.遍历链表将cur作为键,new Node(cur.val)作为值,存入map集合;

3.再次遍历链表,利用map集合存贮的键,将创建的节点(map集合中的值)连接起来,最后返回新链表的头节点

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为链表的大小

空间复杂度:

O ( n ) O(n) O(n)

Code

java 复制代码
/*
// Definition for a Node.
class Node {
    int val;
    Node next;
    Node random;

    public Node(int val) {
        this.val = val;
        this.next = null;
        this.random = null;
    }
}
*/

class Solution {
    /**
     * Copy List with Random Pointer
     *
     * @param head The head of linked list
     * @return Node
     */
    public Node copyRandomList(Node head) {
        if (head == null) {
            return null;
        }
        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);
    }
}
相关推荐
恣艺12 分钟前
LeetCode 135:分糖果
算法·leetcode·职场和发展
TDengine (老段)24 分钟前
TDengine 中 TDgp 中添加算法模型(异常检测)
java·大数据·数据库·算法·时序数据库·tdengine·涛思数据
2501_9247482441 分钟前
高密度客流识别精度↑32%!陌讯多模态融合算法在智慧交通的实战解析
大数据·人工智能·算法·目标检测·计算机视觉
WeiJingYu.1 小时前
逻辑回归的应用
算法·机器学习·逻辑回归
高斯林.神犇1 小时前
Dijkstra算法
算法
拾光Ծ2 小时前
【数据结构】二叉树接口实现指南:递归方法的高效运用 (附经典算法OJ)
数据结构·算法
freexyn2 小时前
Matlab算法编程示例4:数值解法求解常微分方程的代码实例
人工智能·算法·matlab·微分方程·数值解法·算法代码
终是蝶衣梦晓楼2 小时前
HiC-Pro Manual
java·开发语言·算法
惊岁晚2 小时前
【实践记录】github仓库的更新
算法·容器·r语言·github
独好紫罗兰3 小时前
C++信息学奥赛一本通-第一部分-基础一-第一章
c++·算法