合併兩個有序鍊錶

2021-09-23 03:51:10 字數 821 閱讀 6937

題目描述

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 

示例:

輸入:1->2->4, 1->3->4輸出:1->1->2->3->4->4
思路分析

首先,兩個鍊錶是有序的,要合併這兩個有序鍊錶使合併後的鍊錶仍然有序,我們可以採用這樣的方法,構造乙個空節點,比較兩個有序鍊錶第乙個節點的值,哪個小就將其新增到空節點後,同時指標後移,繼續比較,如果兩個鍊錶長度相等,比較結束,則合併結束,如果長度不相等,那麼肯定會剩下一部分鍊錶,而且必然是比當前合併過程中產生的鍊錶的最大值還大的,所以只需把剩下的鍊錶連線到合併鍊錶的末尾即可。

**如下:

/*** definition for singly-linked list.

* public class listnode

* }*/class solution {

public listnode mergetwolists(listnode l1, listnode l2) {

listnode head = new listnode(0);

listnode cur = head;

while(l1!=null&&l2!=null){

if(l1.val此外,還有一種方法,這裡只提供思路,可以先選取乙個鍊錶為基準,如選取l1位基準,則遍歷l2,將l2每乙個節點插入到剛好大於l1節點之後,就好比排隊,將乙個佇列的所有學生合適的排到另乙個佇列即可。

合併兩個有序鍊錶

鍊錶的題目總是讓我很惆悵。動輒就會runtime error。比如這題,額外用了乙個節點的空間來儲存頭節點。我很不情願多用這個空間,不過貌似不行。貌似不行,實際可行,見附錄。把頭節點提出迴圈 實現類 class solution else if l1 null p next l1 if l2 nul...

合併兩個有序鍊錶

三個指標乙個儲存la鍊錶 乙個儲存lb鍊錶,乙個指向新的鍊錶。鍊錶的插入,兩個指標,乙個是head,乙個指向head後面的鏈,新插入的元素位於head後面。執行該 自己外加上class類。static class node public static void main string args st...

合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4思路 很簡單就是二路歸併的思想,時間複雜度o n definition for singly linked list.struct listno...