【剑指Offer】合并两个排序的链表
发布日期:2022-02-10 08:55:12 浏览次数:32 分类:技术文章

本文共 2230 字,大约阅读时间需要 7 分钟。

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

思路

很基础的两个指针分别指向两个链表,然后比大小的过程,循环解决。代码写的很细致,主要考虑鲁棒性问题。

代码

/*struct ListNode {	int val;	struct ListNode *next;	ListNode(int x) :			val(x), next(NULL) {	}};*/class Solution {public:    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)    {                ListNode* p1 = pHead1;        ListNode* p2 = pHead2;                ListNode* Head = NULL;        ListNode* pLast = NULL;                if(pHead1 == NULL && pHead2 == NULL){            return NULL;        }else if(pHead1 != NULL && pHead2 == NULL){            return pHead1;        }else if(pHead1 == NULL && pHead2 != NULL){            return pHead2;        }                        if(p1->val < p2->val){            Head = new ListNode(p1->val);            pLast = Head;            p1=p1->next;        }else if(p1->val > p2->val){            Head = new ListNode(p2->val);            pLast = Head;            p2=p2->next;        }else if(p1->val == p2->val){            Head = new ListNode(p1->val);            pLast = Head;            pLast->next = new ListNode(p2->val);            pLast=pLast->next;            p1=p1->next;            p2=p2->next;        }                while(p1 != NULL && p2!= NULL){            if(p1->val < p2->val){                pLast->next = new ListNode(p1->val);                pLast = pLast->next;                p1=p1->next;            }else if(p1->val > p2->val){                pLast->next = new ListNode(p2->val);                pLast = pLast->next;                p2=p2->next;            }else if(p1->val == p2->val){                pLast->next = new ListNode(p1->val);                pLast=pLast->next;                pLast->next = new ListNode(p2->val);                pLast=pLast->next;                p1=p1->next;                p2=p2->next;            }        }                if(p2 != NULL){            while(p2!= NULL){                pLast->next = new ListNode(p2->val);                pLast = pLast->next;                p2=p2->next;            }        }else if(p1 != NULL){            while(p1!= NULL){                pLast->next = new ListNode(p1->val);                pLast = pLast->next;                p1=p1->next;            }        }                return Head;    }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105526748 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】反转链表
下一篇:【剑指Offer】从尾到头打印链表

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月31日 07时06分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Qt:06---元对象系统(QObject、Q_OBJECT、MOC)、sender()函数 2019-04-26
Qt:07---属性系统(Q_PROPERTY、Q_CLASSINFO) 2019-04-26
Qt:08---信号与槽(connect、disconnect、emit、slots、signals) 2019-04-26
Qt:09---QtGlobal全局定义头文件:Qt数据类型 2019-04-26
Qt:10---QtGlobal全局定义头文件:全局函数(qMax、qAbs、qIsInf、qBound、qRound、qFuzzyCompare等) 2019-04-26
Qt:11---QtGlobal全局定义头文件:系统宏(QT_VERSION、Q_BIG_ENDIAN、Q_UNUSED、foreach、forever、qDebug等) 2019-04-26
Qt:12---顺序容器、关联容器(QList、QLinkedList、QVector、QMap、QMultiMap、QSet等) 2019-04-26
Linux(程序设计):12---选项查询(sysconf、pathconf、fpathconf) 2019-04-26
C++:26---算术、关系、逻辑运算模板(functional头文件) 2019-04-26
C++:27---function模板(functional头文件) 2019-04-26
C++:28---类类型转换之类型转换运算符operator(explicit) 2019-04-26
C++:29---类类型转换之隐式转换(转换构造函数、explicit、static_cast) 2019-04-26
Python爬虫入门教程 71-100 续上篇,python爬虫爬取B站视频 2019-04-26
学会这个Python库,至少能减少100行代码 2019-04-26
欺负我是程序员?几行代码让你服 2019-04-26
Python爬虫入门教程 72-100 分布式爬虫初步解析-配好环境肝完一半 2019-04-26
打分吧!客服小姐姐,评分页面与客户总分页面的 Django 实现 2019-04-26
自己动手写个微型 CSDN 吧,还能实现网页版 Blink,No.1 2019-04-26
技术博客只能写技术文章吗?当然是由我们自己来定义。 2019-04-26
微型 CSDN 开发项目,手动创建导航组件的新增页面 2019-04-26