package homework; import homework.Lc19.ListNode; /** * 21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 * * 示例: * * 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 * */ public class Lc21 { public static class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode prehead = new ListNode(-1); ListNode prev = prehead; while (l1 != null && l2 != null) { if (l1.val <= l2.val) { prev.next = l1; l1 = l1.next; } else { prev.next = l2; l2 = l2.next; } prev = prev.next; } // exactly one of l1 and l2 can be non-null at this point, so connect // the non-null list to the end of the merged list. prev.next = l1 == null ? l2 : l1; return prehead.next; } public static void main(String[] args) { ListNode l1 = new ListNode(1); ListNode l2 = new ListNode(2); l1.next = l2; ListNode l3 = new ListNode(1); ListNode l4 = new ListNode(2); l3.next = l4; mergeTwoLists(l1, l3); } }