题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
注意考虑输入为NULL的情况
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
ListNode *last = NULL;
ListNode *head = NULL;
if(pHead1 == NULL)
return pHead2;
if(pHead2 == NULL)
return pHead1;
while(pHead1 && pHead2)
{
if(head == NULL)
{
if(pHead1 -> val > pHead2 -> val)
{
ListNode* l = new ListNode(pHead2 -> val);
last = l;
head = l;
pHead2 = pHead2 -> next;
}
else
{
ListNode* l = new ListNode(pHead1 -> val);
head = l;
last = l;
pHead1 = pHead1 -> next;
}
}
else
{
if(pHead1 -> val > pHead2 -> val)
{
ListNode* l = new ListNode(pHead2 -> val);
last -> next = l;
last = l;
pHead2 = pHead2 -> next;
}
else
{
ListNode* l = new ListNode(pHead1 -> val);
last -> next = l;
last = l;
pHead1 = pHead1 -> next;
}
}
}
if(pHead1 != NULL)
{
while(pHead1)
{
ListNode* l = new ListNode(pHead1 -> val);
last -> next = l;
last = l;
pHead1 = pHead1 -> next;
}
}
else if(pHead2 != NULL)
{
while(pHead2)
{
ListNode* l = new ListNode(pHead2 -> val);
last -> next = l;
last = l;
pHead2 = pHead2 -> next;
}
}
return head;
}
};
递归方法
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null){
return list2;
}
if(list2 == null){
return list1;
}
if(list1.val <= list2.val){
list1.next = Merge(list1.next, list2);
return list1;
}else{
list2.next = Merge(list1, list2.next);
return list2;
}
}