日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

138. 复制带随机指针的链表 golang

發(fā)布時(shí)間:2023/11/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 138. 复制带随机指针的链表 golang 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

138. 復(fù)制帶隨機(jī)指針的鏈表

這個(gè)題結(jié)構(gòu)體特殊,需要更改上一篇博客的node結(jié)構(gòu)體

給定一個(gè)鏈表,每個(gè)節(jié)點(diǎn)包含一個(gè)額外增加的隨機(jī)指針,該指針可以指向鏈表中的任何節(jié)點(diǎn)或空節(jié)點(diǎn)。

要求返回這個(gè)鏈表的 深拷貝。

我們用一個(gè)由 n 個(gè)節(jié)點(diǎn)組成的鏈表來(lái)表示輸入/輸出中的鏈表。每個(gè)節(jié)點(diǎn)用一個(gè) [val, random_index] 表示:

val:一個(gè)表示 Node.val 的整數(shù)。
random_index:隨機(jī)指針指向的節(jié)點(diǎn)索引(范圍從 0 到 n-1);如果不指向任何節(jié)點(diǎn),則為 null 。

示例 1:

輸入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
輸出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
示例 2:

輸入:head = [[1,1],[2,1]]
輸出:[[1,1],[2,1]]
示例 3:

輸入:head = [[3,null],[3,0],[3,null]]
輸出:[[3,null],[3,0],[3,null]]
示例 4:

輸入:head = []
輸出:[]
解釋:給定的鏈表為空(空指針),因此返回 null。

提示:

-10000 <= Node.val <= 10000
Node.random 為空(null)或指向鏈表中的節(jié)點(diǎn)。
節(jié)點(diǎn)數(shù)目不超過(guò) 1000 。

解法

/*** Definition for a Node.* type Node struct {* Val int* Next *Node* Random *Node* }*/ func copyRandomList(head *Node) *Node {//1->2(4)->3->4->nilif head == nil {return nil}//1->1->2->2->3->3->4->4res := copyNextPoint(head)//1->1->2(4)->2(4)->3->3->4->4res = copyRandomPoint(res)//1->2(4)->3->4->nilres = listCut(res)return res }func copyNextPoint(head *Node) *Node {temp := new(Node)temp.Next = headp := headfor p != nil {tmp := new(Node)tmp.Val = p.Valtmp.Next = p.Nextp.Next = tmpp = p.Next.Next}return temp.Next }func copyRandomPoint(head *Node) *Node {temp := new(Node)temp.Next = headp := headfor p != nil {if p.Random != nil {temp_random := p.Nexttemp_random.Random = p.Random.Next}p = p.Next.Next}return temp.Next }func listCut(head *Node) *Node {temp := new(Node)res := tempfor old := head; old != nil;{res.Next = old.Nextold.Next = res.Next.Nextold, res = old.Next, res.Next}return temp.Next }

總結(jié)

以上是生活随笔為你收集整理的138. 复制带随机指针的链表 golang的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。