【数据结构与算法】之深入解析“复制带随机指针的链表”的求解思路与算法示例
生活随笔
收集整理的這篇文章主要介紹了
【数据结构与算法】之深入解析“复制带随机指针的链表”的求解思路与算法示例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、題目
① 題目描述
- 給你一個(gè)長度為 n 的鏈表,每個(gè)節(jié)點(diǎn)包含一個(gè)額外增加的隨機(jī)指針 random ,該指針可以指向鏈表中的任何節(jié)點(diǎn)或空節(jié)點(diǎn)。
- 構(gòu)造這個(gè)鏈表的深拷貝,深拷貝應(yīng)該正好由 n 個(gè)全新節(jié)點(diǎn)組成,其中每個(gè)新節(jié)點(diǎn)的值都設(shè)為其對應(yīng)的原節(jié)點(diǎn)的值。新節(jié)點(diǎn)的 next 指針和 random 指針也都應(yīng)指向復(fù)制鏈表中的新節(jié)點(diǎn),并使原鏈表和復(fù)制鏈表中的這些指針能夠表示相同的鏈表狀態(tài)。復(fù)制鏈表中的指針都不應(yīng)指向原鏈表中的節(jié)點(diǎn) 。
- 例如,如果原鏈表中有 X 和 Y 兩個(gè)節(jié)點(diǎn),其中 X.random -> Y ,那么在復(fù)制鏈表中對應(yīng)的兩個(gè)節(jié)點(diǎn) x 和 y ,同樣有 x.random -> y 。返回復(fù)制鏈表的頭節(jié)點(diǎn)。
- 用一個(gè)由 n 個(gè)節(jié)點(diǎn)組成的鏈表來表示輸入/輸出中的鏈表。每個(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 。
- 你的代碼只接受原鏈表的頭節(jié)點(diǎn) head 作為傳入?yún)?shù)。
② 示例
- 示例一:
總結(jié)
以上是生活随笔為你收集整理的【数据结构与算法】之深入解析“复制带随机指针的链表”的求解思路与算法示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构与算法】之深入解析KMP算法的
- 下一篇: iOS之深入解析单例的实现和销毁的底层原