剑指Offer-16-合并两个排序的链表 发表于 2020-03-08 | 分类于 剑指Offer | 评论数: | 热度: ℃ 本文字数: 6k | 阅读时长 ≈ 5 分钟 题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 Code123456789101112131415161718192021222324252627282930313233343536//非递归版/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: //归并排序:升序 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* result= new ListNode(-1); ListNode* current = result; while(pHead1!=0&&pHead2!=0){ if(pHead1->val<pHead2->val){ current->next = pHead1; pHead1=pHead1->next; }else{ current->next = pHead2; pHead2=pHead2->next; } current=current->next; } if(pHead1!=0) current->next = pHead1; if(pHead2!=0) current->next = pHead2; //返回的链表不包括头节点 return result->next; }}; 123456789101112131415161718192021222324252627//递归版/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: //归并排序:升序 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==0)return pHead2; if(pHead2==0)return pHead1; if(pHead1->val<pHead2->val){ pHead1->next = Merge(pHead1->next,pHead2); return pHead1; }else{ pHead2->next = Merge(pHead1,pHead2->next); return pHead2; } }}; 相关文章推荐 剑指Offer-1-二维数组的查找 剑指Offer-11-二进制中1的个数 剑指Offer-12-数值的整数次方 剑指Offer-10-矩形覆盖 剑指Offer-13-调整数组顺序使奇数位于偶数前面 ----\(˙<>˙)/----赞赏一下吧~ 打赏 微信支付 支付宝 本文作者: wicherQAQ 本文链接: https://wicherqaq.github.io/2020/03/08/%E5%89%91%E6%8C%87Offer-16-%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!