輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
1. 原結點之後插入乙個結點a的複製結點a'2. 遍歷鍊錶,根據原結點a的隨機指標確定複製結點a'的隨機指標(相對距離是一樣的)
3. 從原鍊錶中將複製的結點取出來單獨成為乙個新煉錶即為所求鍊錶
/*
public class randomlistnode }*/
public class solution
randomlistnode p = phead;
while (p != null)
p = phead;
while (p != null) else
p = p.next.next;
}p = phead;
randomlistnode newhead = new randomlistnode(0);
randomlistnode q = newhead;
while (p != null)
q.next = null;
return newhead.next;
}}
劍指Offer NO 16 合併兩個排序的列表
題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解題思路 使用遞迴方法 新建乙個鍊錶reslist用作輸出結果,輸入鍊錶為list1和list2,當list1.val反之,reslist list2,reslist.next merge list...
劍指 25 合併兩個排序的列表
輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。示例1 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4遞迴 這個問題就像是串糖葫蘆。給了兩個排序的鍊錶 兩盆由小到大排序的山楂,那麼首先要確定頭結點 第乙個穿到串上的,頭結點確定好了之後就相當於每次從兩個盆裡各拿乙個...
劍指 25 合併兩個排序的鍊錶
題目描述 演算法分析 提交 class solution listnode merge2 listnode phead1,listnode phead2 else listnode newhead currnode while p1 p2 else currnode currnode next wh...