该问题可以看做一个递归问题,首先比较两个链表的首节点,然后选择比较小的一个,接着把剩下的再作为一个整体。。。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL)//递归程序中最关键的就是终止条件
return l2;
else if(l2 == NULL)
return l1;
ListNode* pMergedHead = NULL;
if(l1 -> val < l2 -> val){
pMergedHead = l1;
pMergedHead -> next = mergeTwoLists(l1 -> next, l2);
}
else{
pMergedHead = l2;
pMergedHead -> next = mergeTwoLists(l1, l2 -> next);
}
return pMergedHead;
}
};
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。