21. 合併兩個有序連結串列 Merge Two Sorted Lists
阿新 • • 發佈:2020-12-04
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