博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----138. Copy List with Random Pointer
阅读量:4112 次
发布时间:2019-05-25

本文共 1625 字,大约阅读时间需要 5 分钟。

链接:

大意:

给定一个链表头结点head,该链表节点的域除了有单链表节点的域之外,还有一个random域,可指向任意一个节点(包括自身)。链表节点数据结构如下:

class Node {    public int val;    public Node next;    public Node random;    public Node() {}    public Node(int _val,Node _next,Node _random) {        val = _val;        next = _next;        random = _random;    }};

现要求对该链表进行深度复制。例子:

思路:

与之前一个关于图的克隆问题思路一样: 也是使用dfs

代码:

class Solution {    public Node copyRandomList(Node head) {        if (head == null)            return null;        Map
map = new HashMap<>(); Node node = new Node(head.val, null, null); map.put(node.val, node); dfs(head, node, map); return node; } /* 如果该节点未被创建,则创建该节点的复制,并相应的域指向它,并从该节点开始继续进行dfs复制 如果该节点已被创建,则直接使相应的域指向它,不在该节点进行dfs复制 */ public void dfs(Node oldNode, Node newNode, Map
map) { if (oldNode.next != null) { if (!map.containsKey(oldNode.next.val)) { map.put(oldNode.next.val, new Node(oldNode.next.val, null, null)); newNode.next = map.get(oldNode.next.val); dfs(oldNode.next, newNode.next, map); } else { newNode.next = map.get(oldNode.next.val); } } if (oldNode.random != null) { if (!map.containsKey(oldNode.random.val)) { map.put(oldNode.random.val, new Node(oldNode.random.val, null, null)); newNode.random = map.get(oldNode.random.val); dfs(oldNode.random, newNode.random, map); } else { newNode.random = map.get(oldNode.random.val); } } }}

结果:

结论:

dfs。逻辑理清楚了就好做 

 

 

转载地址:http://sxesi.baihongyu.com/

你可能感兴趣的文章
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
查找最大值最小值
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
数据库
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python猜拳游戏
查看>>
python实现100以内自然数之和,偶数之和
查看>>
python数字逆序输出及多个print输出在同一行
查看>>
ESP8266 WIFI数传 Pixhaw折腾笔记
查看>>
苏宁产品经理面经
查看>>
百度产品经理群面
查看>>