1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| // @Title: 复杂链表的复制 (复杂链表的复制 LCOF)
// @Author: 15816537946@163.com
// @Date: 2022-02-02 20:20:50
// @Runtime: 0 ms
// @Memory: 3.5 MB
/**
* Definition for a Node.
* type Node struct {
* Val int
* Next *Node
* Random *Node
* }
*/
func copyRandomList(head *Node) *Node {
nodeMap = map[*Node]*Node{}
return deepCopy(head)
}
func deepCopy(node *Node) *Node {
if node == nil {
return nil
}
if n, ok:= nodeMap[node];ok {
return n
}
newNode:= &Node{Val:node.Val}
nodeMap[node] = newNode
newNode.Next = deepCopy(node.Next)
newNode.Random = deepCopy(node.Random)
return newNode
}
var nodeMap map[*Node]*Node
|