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.
Solution:
Do the change on the original two lists.
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(0);
ListNode* p1 = l1;
ListNode* p2 = l2;
ListNode* p = head;
while (p1 && p2) {
if (p1->val < p2->val) {
p->next = p1;
p1 = p1->next;
} else {
p->next = p2;
p2 = p2->next;
}
p = p->next;
}
if (!p1) p->next = p2;
else p->next = p1;
return head->next;
// Here maybe you should also consider freeing the head node.
}
};