21. 合并两个有序链表 Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new sorted list. 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