Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Time complexity: O(m+n)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
// Start typing your Java solution below
// DO NOT write main() function
ListNode root = null;
ListNode node = null;
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
if (node == null) {
node = l1;
root = node;
}
else {
node.next = l1;
node = node.next;
}
l1 = l1.next;
}
else {
if (node == null) {
node = l2;
root = node;
}
else {
node.next = l2;
node = node.next;
}
l2 = l2.next;
}
}
while (l1 != null) {
if (node == null) {
node = l1;
root = node;
}
else {
node.next = l1;
node = node.next;
}
l1 = l1.next;
}
while (l2 != null) {
if (node == null) {
node = l2;
root = node;
}
else {
node.next = l2;
node = node.next;
}
l2 = l2.next;
}
return root;
}
}