leecode刷題(23)-- 合並兩個有序鏈表
阿新 • • 發佈:2019-05-04
拼接 返回 def pre get class lee -- 有序
leecode刷題(23)-- 合並兩個有序鏈表
合並兩個有序鏈表
將兩個有序鏈表合並為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
思路:
這道題我們可以用遞歸的方法來處理。首先我們可以設置一個臨時頭節點 head,當鏈表 l1 和鏈表 l2 不為空時,對它們進行比較。如果 l1 對應的節點小於或等於 l2 對應的節點,則將 head 與 l1 的節點連接;如果 l1 對應的節點大於 l2 對應的節點,則將 head 與 l2 的節點連接。然後一直遞歸執行這個過程,直到合並為一個有序鏈表,輸出結果。
代碼如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) return l2; if (l2 == null) return l1; ListNode head = null; if (l1.val <= l2.val) { head = l1; head.next = mergeTwoLists(l1.next, l2); } else { head = l2; head.next = mergeTwoLists(l1, l2.next); } return head; } }
leecode刷題(23)-- 合並兩個有序鏈表