采用迭代的方法,参考了合并两个排序数组的做法
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode* curr1 = pHead1;
ListNode* curr2 = pHead2;
ListNode* newHeadDummy = new ListNode(0);
ListNode* ptr = newHeadDummy;
while(curr1 != NULL && curr2 != NULL) {
if(curr1->val <= curr2->val) {
ptr->next = curr1;
ptr = curr1;
curr1 = curr1->next;
}
else {
ptr->next = curr2;
ptr = curr2;
curr2 = curr2->next;
}
}
if(curr1 != NULL) {
ptr->next = curr1;
}
if(curr2 != NULL) {
ptr->next = curr2;
}
return newHeadDummy->next;
}
};
递归
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL) return l2;
if(l2 == NULL) return l1;
ListNode* head = NULL;
if(l1->val <= l2->val) {
head = l1;
head->next = mergeTwoLists(l1->next, l2);
}
else {
head = l2;
head->next = mergeTwoLists(l1, l2->next);
}
return head;
}
};