1 public class Solution {
2 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
3 ListNode dummy1 = new ListNode(0), dummy2 = new ListNode(0), dummy3 = new ListNode(0), tail = dummy3;
4 dummy1.next = l1;
5 dummy2.next = l2;
6 dummy3.next = null;
7 while(l1 != null && l2 != null) {
8 ListNode minNode = l1.val < l2.val ? l1 : l2;
9 ListNode minDummy = l1.val < l2.val ? dummy1 : dummy2;
10 minDummy.next = minNode.next;
11 l1 = minNode == l1 ? l1.next : l1;
12 l2 = minNode == l2 ? l2.next : l2;
13 minNode.next = null;
14 tail.next = minNode;
15 tail = tail.next;
16 }
17
18 tail.next = l1 == null ? l2 : l1;
19
20 return dummy3.next;
21 }
22 }