輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
第一步,複製原來鍊錶的節點,並設定next指標,這一步不同於簡單的複製節點,而是把每個複製的節點都鏈在原節點的後面,相當於複製節點之間隔了乙個原節點;第二步,設定複製節點的特殊指標,由於在第一步做了特殊處理,所以當乙個節點r的特殊指標指向節點n的時候,複製節點r』的特殊指標則是n』,這樣就可以在o(1)時間定位到r的特殊指標指向的節點;第三步,從鍊錶中抽取出複製節點,由於複製節點是間隔相連的,所以這一步比較好處理。綜合以上三個步驟,就完成了複雜鍊錶的複製。
/*
public class randomlistnode }*/
public
class solution
//第一步:複製鍊錶節點
private
void
clonenodes(randomlistnode phead)
}//第二步:設定每個節點的隨機指標
private
void
connectindexofnodes(randomlistnode phead)
}
//第三步:組合複製的節點
private randomlistnode connectfinalnodes(randomlistnode phead)
while (node != null)
return clonehead;
}}
劍指offer複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 我的 思路比較笨,就是首先構造乙個正常的不大random指標的鍊錶,然後再去遍歷...
劍指offer 複雜鍊錶複製
輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 解題思路 1 複製每個節點,如 複製節點a得到a1,將a1插入節點a後面 2 遍歷鍊錶,a...
劍指offer 複雜鍊錶複製
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 非遞迴方法 struct randomlistnode randomlistno...