剑指offer--17.合并两个排序的链表
来源:互联网 发布:中国科学院待遇 知乎 编辑:程序博客网 时间:2024/05/01 22:16
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
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==NULL) return pHead2; else if(pHead2==NULL) return pHead1; ListNode* pRes=NULL; if(pHead1->val<=pHead2->val) { pRes=pHead1; pRes->next=Merge(pHead1->next,pHead2); } else { pRes=pHead2; pRes->next=Merge(pHead1,pHead2->next); } return pRes; }};
非递归思路
class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1==NULL) return pHead2; else if(pHead2==NULL) return pHead1; //pRes返回链表的头结点 ListNode* pRes=NULL; //pLast返回链表的尾节点 ListNode* pLast=NULL; if(pHead1->val<=pHead2->val) { pRes=pHead1; pHead1=pHead1->next; } else { pRes=pHead2; pHead2=pHead2->next; } pLast=pRes; while(pHead1!=NULL&&pHead2!=NULL) { if(pHead1->val<=pHead2->val) { pLast->next=pHead1; pLast=pLast->next; pHead1=pHead1->next; } else { pLast->next=pHead2; pLast=pLast->next; pHead2=pHead2->next; } } if(pHead2==NULL) pLast->next=pHead1; else if(pHead1==NULL) pLast->next=pHead2; return pRes; }};
0 0
- 17.合并两个排序的链表|剑指Offer
- 剑指offer--17.合并两个排序的链表
- 剑指offer 17. 合并两个排序的链表
- 剑指offer 17-合并两个排序表的链表
- 剑指Offer之合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 【剑指offer】Q17:合并两个排序的链表
- 剑指offer-17:合并两个排序的链表
- 剑指offer系列源码-合并两个排序的链表
- 剑指offer--合并两个排序的链表
- 剑指offer之合并两个排序的链表
- 剑指Offer之 - 合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指Offer-合并两个排序的链表
- 剑指offer:合并两个排序的链表 代码实现
- 《剑指Offer》面试题:合并两个排序的链表
- 合并两个排序的链表(剑指offer)
- OpenGL:纹理基础总结
- Java正则表达式的语法与示例
- labview与下位机通信的格式问题处理
- skyline内存溢出崩溃解决办法
- Creat中。关于抛出坐标与接收坐标
- 剑指offer--17.合并两个排序的链表
- 导航栏制作
- asp.net mvc ajax分页 CPager(秒杀杨涛ajax分页) 封装之前
- noi 2015 程序自动分析
- html5视频播放解决方案
- Spring Boot - 初探
- 微信开发提示【防盗号或诈骗,请不要输入QQ密码】
- SetupDiGetDeviceInterfaceDetail
- Hive最新数据操作详解(超级详细)