21 合併兩個有序鍊錶

2022-08-02 17:03:10 字數 806 閱讀 3936

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

示例:

輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

class listnode 

listnode(int val)

listnode(int val, listnode next)

}

直接暴力組合節點,使用dummy節點避免第乙個節點需要做特殊處理。其中乙個鏈後續為空的時候,直接將另外一條鏈結在要返回的鏈後面。時間複雜度 \(o(m+n)\),空間複雜度 \(o(1)\)

public listnode mergetwolists(listnode l1, listnode l2) else

head = head.next;

}if (l1 == null)

if (l2 == null)

return dummy.next;

}

重複的判斷行為使用遞迴,即當前節點被確定後將其後續節點及另外乙個鏈的節點作為引數遞迴呼叫方法。時間複雜度 \(o(m+n)\),空間複雜度 \(o(m+n)\)

public listnode mergetwolists(listnode l1, listnode l2) 

if (l1.val > l2.val) else

}

21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 原本想的是用19題的結構陣列那種方法來做 分別遍歷兩個鍊錶,建立結構儲存原始索引,val和指標,氣泡排序這個結構,更新索引,按照索引建立新的n...

21 合併兩個有序鍊錶

合併兩個有序鍊錶 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4比較簡單,比較大小,重新排序即可。created by hints on 2019 1 9.include using name...

21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4先確定合併鍊錶第乙個節點 在迴圈中同時遍歷兩個鍊錶,將後面其餘節點逐次比較,依大小次序連線到首節點之後,迴圈結束後可能有乙個鍊錶未遍歷完,將這個鍊錶剩...