问题:输入两个单调递增的链表,输出两个链表合成后的链表,并满足合成后的链表单调不减规则。
思路:既然输入的链表已经单调递增,那就采取“递归”逐一比较合成是最直接的方法。
具体代码:(C++)
struct ListNode
{
int val;
ListNode* next;
ListNode(int x):val(x),next(nullptr){}
};
class Solution
{
public:
ListNode* Merge(ListNode* pHead1, LIstNode* pHead2)
{
if(pHead1 == nullptr)
return pHead2;
if(pHead2 == nullptr)
return pHead1;
ListNode* pMerge = nullptr;
if(pHead1->val <= pHead2->val)
{
pMerge = pHead1;
pMerge->next = Merge(pHead1->next,pHead2);
}
else {
pMerge= pHead2;
pMerge->next = Merge(pHead1,pHead2->next);
}
return pMerge;
}
};