一、题目
解法一——递归算法
?class Solution { public: ? ? ListNode* Merge(ListNode* pHead1, ListNode* pHead2)? ? ? { ? ? ? ? if(pHead1==nullptr) ? ? ? ? { ? ? ? ? ? ? return pHead2; ? ? ? ? } ? ? ? ? if(pHead2==nullptr) ? ? ? ? { ? ? ? ? ? ? return pHead1; ? ? ? ? } ? ? ? ? if(pHead1->val<=pHead2->val) ? ? ? ? { ? ? ? ? ? ? pHead1->next = Merge(pHead1->next,pHead2); ? ? ? ? ? ? return pHead1; ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? pHead2->next = Merge(pHead1,pHead2->next); ? ? ? ? ? ? return pHead2; ? ? ? ? } ? ? } };
这一问题的其实是提取数据并排序,用if对比当前值大小+并将上次获得的链表放到当前值较小的链表末端实现递归。
参考文献:(5条消息) 递归算法讲解_LightOn-CSDN博客_递归算法
|