lc-go/solutions/1/q138/solution.go
2026-01-17 12:51:40 +09:00

34 lines
487 B
Go

package q138
type Node struct {
Val int
Next *Node
Random *Node
}
func copyRandomList(head *Node) *Node {
idx := make(map[*Node]*Node, 256)
p := head
for p != nil {
newNode := *p // copy
idx[p] = &newNode
p = p.Next
}
p = head
for p != nil {
newNode := idx[p]
if newNode.Next != nil {
newNode.Next = idx[newNode.Next]
}
if newNode.Random != nil {
newNode.Random = idx[newNode.Random]
}
p = p.Next
}
return idx[head]
}
var _ = copyRandomList