
【剑指Offer】合并两个排序的链表
发布日期:2022-02-10 08:55:12
浏览次数:11
分类:技术文章
本文共 1506 字,大约阅读时间需要 5 分钟。
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路
很基础的两个指针分别指向两个链表,然后比大小的过程,循环解决。代码写的很细致,主要考虑鲁棒性问题。
代码
/*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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2023年03月11日 05时07分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
Android 活用提示窗Toast和Snackbar
2019-09-09 07:57:16
Android 屏幕分辨率
2019-09-09 07:57:15
Android 特别的.9图片
2019-09-09 07:57:15
Android页面布局视图
2019-09-09 07:57:14
Android:控件GridView的使用
2019-09-09 07:57:13
android截屏的几种方法
2019-09-09 07:57:13
Android shape drawable XML 可绘制图形的创建与使用
2019-09-09 07:57:13
Java-String类的常用方法总结
2019-09-09 07:57:12
android shape详解,androidshape
2019-09-09 07:57:12
layer-list -- layer-list的基本使用介绍
2019-09-09 07:57:11
Android Studio 如何使用SVG矢量图
2019-09-09 07:57:11
RealtiveLayout布局中设置控件layout_above属性的注意事项
2019-09-09 07:57:10
Java四种线程池的使用
2019-09-09 07:57:10
Android CountDownTimer倒计时器的使用
2019-09-09 07:57:09
Bitmap类用法 详细说明
2019-09-09 07:57:09
android学习笔记之ImageView的scaleType属性
2019-09-09 07:57:08
Android中onTouch与onClick事件的关系
2019-09-09 07:57:07
Fragment的setUserVisibleHint方法实现懒加载
2019-09-09 07:57:07
Android 项目从零到上线的全过程
2019-09-09 07:57:07
基于Android中实现定时器的3种解决方法
2019-09-09 07:57:06