17 合併兩個排序的鍊錶 JAVA

2021-08-31 03:25:39 字數 607 閱讀 3570

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

**解題思路:**利用遞迴來完成,首先要解決好空鍊錶的情況,

1.鍊錶1為空,直接返回鍊錶2。

2.鍊錶2為空,直接返回鍊錶1.

3.鍊錶1、2都為空則返回null。

其次開始比較鍊錶1、2的頭結點的大小,建立乙個結點newlist,兩種情況

1.list1.val > list2.val,此時需要把list2的頭結點取出來newlist = list2,並從list2的下乙個結點呼叫遞迴merge(list1,list2.next)

2.list1.val < list2.val,此時需要把list1的頭結點取出來newlist = list1,並從list1的下乙個結點呼叫遞迴merge(list1.next,list2)

最終的返回值newlist就是新的合併好的鍊錶。

/*

public class listnode

}*/public

class

solution

else

return newlist;

}}

合併兩個排序的鍊錶 17

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。要合併兩個遞增的鍊錶,首先找出兩個鍊錶的頭結點中較小的乙個就為合併後新鍊錶的頭結點,之後再依次將兩個鍊錶中的結點值進行相比較,依次將較小值在新鍊錶中進行尾插,直到其中乙個鍊錶遍歷完成,將剩餘鍊錶直接鏈在新鍊錶的尾部就可以了...

17 合併兩個有序鍊錶

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 遞迴與非遞迴求解,小數放在前面。實現 解法一 遞迴,時間複雜度 o m n 空間複雜度 o m n public listnode mergetwolists listnode list1,l...

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...