1. 程式人生 > 實用技巧 >21. 合併兩個有序連結串列 Merge Two Sorted Lists

21. 合併兩個有序連結串列 Merge Two Sorted Lists

Merge two sorted linked lists and return it as a newsortedlist. The new list should be made by splicing together the nodes of the first two lists.

Input: l1 = [1,2,4], l2 = [1,3,4]
Output: [1,1,2,3,4,4]

方法一、遞迴

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null) return l2;
        
else if(l2 == null) return l1; else if(l1.val <= l2.val ){ l1.next = mergeTwoLists(l1.next, l2); return l1; }else{ l2.next = mergeTwoLists(l1, l2.next); return l2; } }

方法二、迭代

當l1和l2都不為空時,取較小的。最後新增剩下l1或l2

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
         ListNode dumpy 
= new ListNode(0); ListNode cur = dumpy; while (l1 != null && l2 != null) { if (l1.val <= l2.val) { cur.next = l1; l1 = l1.next; cur = cur.next; } else { cur.next = l2; l2
= l2.next; cur = cur.next; } } if(l1 != null) cur.next = l1; if(l2 != null) cur.next = l2; return dumpy.next; }

參考連結:

https://leetcode.com/problems/merge-two-sorted-lists/

https://leetcode-cn.com/problems/merge-two-sorted-lists