08. Merge 2 sorted linked lists in reverse order
Last updated
Last updated
class Solution {
public:
struct Node *reverseList(Node *curr) {
if (!curr || !(curr->next))
return curr;
auto res = reverseList(curr->next);
curr->next->next = curr;
curr->next = NULL;
return res;
}
struct Node *mergeResult(Node *node1, Node *node2) {
if (!node1)
return reverseList(node2);
if (!node2)
return reverseList(node1);
Node *curr = new Node;
Node *head = curr;
while (node1 && node2) {
if (node1->data < node2->data) {
curr->next = node1;
node1 = node1->next;
} else {
curr->next = node2;
node2 = node2->next;
}
curr = curr->next;
}
while (node1) {
curr->next = node1;
node1 = node1->next;
curr = curr->next;
}
while (node2) {
curr->next = node2;
node2 = node2->next;
curr = curr->next;
}
head = head->next;
return reverseList(head);
}
};