劍指Offer No 25 合併兩個排序的鍊錶

2021-10-01 08:22:30 字數 748 閱讀 6965

輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的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...