1. 程式人生 > 其它 >leetcode-138:複製帶隨即指標的連結串列

leetcode-138:複製帶隨即指標的連結串列

技術標籤:演算法複製連結串列隨機指標連結串列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 }