问题:输入两个单调递增的链表,输出两个链表合成后的链表,并满足合成后的链表单调不减规则。
思路:既然输入的链表已经单调递增,那就采取“递归”逐一比较合成是最直接的方法。
具体代码:(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;
}
};
本文介绍了一种使用递归方法来合并两个已排序的链表,以生成一个新的按非递减顺序排列的链表。通过比较两个链表的头结点值并递归地处理剩余部分,最终实现了简洁高效的合并过程。
2783

被折叠的 条评论
为什么被折叠?



