add new solutions
This commit is contained in:
parent
d798d5e8c9
commit
886b5e0a8e
34 changed files with 1164 additions and 0 deletions
34
solutions/1/q138/solution.go
Normal file
34
solutions/1/q138/solution.go
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue