21 合併兩個有序鍊錶

2022-09-18 06:30:28 字數 825 閱讀 2635

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

示例:

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

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

解法有兩種:

1.遞迴思路

​ 思路很簡單,遞迴首先要考慮邊界情況,也就是什麼時候停止。當l1走到空時,返回的一定是l2,l2空時同理。

​ 當l1較小時,l1為頭節點,返回的肯定是l1,再跳轉到l1.next進行遞迴。l2小時同理。

class solution 

else if (l2 == null)

else if (l1.val < l2.val)

else

}}

2.迭代思路

設定乙個哨兵節點(prehead),這個結點用來返回值,再來乙個指標節點(pre)用來遍歷兩個鍊錶。設定指標節點等於哨兵節點(這點很重要),比較l1和l2大小,判斷頭節點,讓pre.next指向(此時哨兵節點也指向了頭節點)。再遍歷鍊錶。

class solution else 

pre = pre.next;

}pre.next = l1 == null ? l2 : l1;

return prehead.next;

}}

這個解法不用判斷是否為空,因為返回的是prehead.next。

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先確定合併鍊錶第乙個節點 在迴圈中同時遍歷兩個鍊錶,將後面其餘節點逐次比較,依大小次序連線到首節點之後,迴圈結束後可能有乙個鍊錶未遍歷完,將這個鍊錶剩...