leetcode-138:複製帶隨即指標的連結串列
阿新 • • 發佈:2021-02-18
技術標籤:演算法複製連結串列隨機指標連結串列leetcode演算法
題目描述
給定一個連結串列,每個節點包含一個額外增加的隨機指標,該指標可以指向連結串列中的任何節點或空節點。 要求返回這個連結串列的 深拷貝。
思路分析
- 複製節點跟在原節點後邊
- 先複製連結串列,在複製隨即指標,然後分割連結串列
- 思路二:將隨即指標存到map
程式碼實現
func copyRandomList(head *Node) *Node {
if head == nil {
return head
}
// 複製連結串列
cur := head
for cur != nil {
clone := & Node{Val: cur.Val, Next: cur.Next}
cur.Next = clone
cur = cur.Next.Next
}
// 複製random
cur = head
for cur != nil {
if cur.Random != nil {
cur.Next.Random = cur.Random.Next
}
cur = cur.Next.Next
}
// 分離連結串列
cur = head
cloneList := cur.Next
for cur != nil && cur.Next != nil {
temp := cur.Next
cur.Next = cur.Next.Next
cur = temp
}
return cloneList
}