剑指offer:合并两个排序的链表
题目描述:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路:
这道题应该考察也是链表的相关操作。具体实现,新建一个新的链表,用两个指针分别指向两个链表,每次都比较两个指针指向的值,取小的加入新链表,同时当前指针后移一位。循环结束的条件为任意一个链表为空,即停止。最后做一个判断,新链表指向还没为空的单调递增链表。
代码:
/*
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 == nullptr)
return pHead2;
if(pHead2 == nullptr)
return pHead1;
ListNode* new_pHead, *cur1=pHead1, *cur2=pHead2, *tmp;
if(pHead1->val < pHead2->val)
{
new_pHead = pHead1;
cur1 = cur1->next;
}
else
{
new_pHead = pHead2;
cur2 = cur2->next;
}
tmp = new_pHead;
while(cur1!=nullptr && cur2!=nullptr)
{
if(cur1->val < cur2->val)
{
tmp->next = cur1;
cur1= cur1->next;
}
else
{
tmp->next = cur2;
cur2 = cur2->next;
}
tmp = tmp->next;
}
if(cur1==nullptr)
tmp->next = cur2;
else if(cur2==nullptr)
tmp->next = cur1;
else
tmp->next = nullptr;
return new_pHead;
}
};
剑指offer:合并两个排序的链表的更多相关文章
- 剑指offer——合并两个排序的链表——对象、引用和赋值初接触
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然,我们需要合成后的链表满足单调不减规则. 先公布结果: /* public class ListNode { int val; List ...
- 剑指Offer——合并两个排序的链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 分析: 苦力活,使用两个指针分别指向未被合并的两个链表的首部,比较两个首部数值的大小,合并数值 ...
- python剑指offer 合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. # -*- coding:utf-8 -*- # class ListNode: # def _ ...
- 剑指Offer 合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路: 用2个新节点,一个用来存放新链表的头节点,另一个用来移动.当p1,p2有一个到尾部的 ...
- 用js刷剑指offer(合并两个排序的链表)
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 牛客网链接 js代码 /*function ListNode(x){ this.val = x; ...
- 剑指OFFER——合并两个有序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 再做这道题就是想不起来书上怎么做的了,但是最近看STL里面全是这种基础的合并啊,比较啊.就算不会也看会了. ...
- 剑指offer--23.合并两个排序的链表
时间限制:1秒 空间限制:32768K 热度指数:421239 本题知识点: 链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. class ...
- 剑指offer17 合并两个排序的链表
错误代码: 最后两个if语句的目的是,最后一次迭代,两个链表中剩下的直接连接最后一次比较的数值,同时也是迭代停止的标志.虽然大if语句中比较大小得到的Node是正确的值,但每次迭代只要pHead2不为 ...
- 剑指Offer-16.合并两个排序的链表(C++/Java)
题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 分析: 可以用一个新的节点,来去比较两个单调递增的链表当前节点的值,如果p1当前的值小于p2,则新 ...
- 《剑指offer》 合并两个排序的链表
本题来自<剑指offer> 合并两个排序的链表 题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路: A:采用递归的方式(C++ C ...
随机推荐
- Sqlserver数据库还原一直显示“正在还原…”解决方法
--恢复并且回到可访问状态,要执行 RESTORE database 数据库名 with recovery
- Linux命令一览
Linux系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个-(减号)即可. echo命令:用于在终端输出字符 ...
- 2.Dubbo2.5.3注册中心和监控中心部署
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.注册中心Zookeeper安装 (1)搭建要求 zk服务器集群规模不小于3个节点要求各服务器之间系统时间要 ...
- python difflib.md
difflib 此模块提供了用于比较序列的类和函数.它可以用于例如比较文件,并且可以产生各种格式的差异信息,包括HTML和上下文以及统一差异. difflib 模块包含用于计算和处理序列间差异的工具. ...
- Apache服务器的安装与配置
文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主 ...
- Mysql从库复制的2个问题
.为什么执行stop slave; 再start slave;可以继续主从关系呢? 其实执行stop slave;就是分别关闭了I/O线程(stop slave IO_THREAD;)和SQL线程(s ...
- OpenCV——ORB特征检测与匹配
原文链接:https://mp.weixin.qq.com/s/S4b1OGjRWX1kktefyHAo8A #include <opencv2/opencv.hpp> #include ...
- 声明式API replica controller vs replica set 对比
1.在命令式API中,你可以直接发出服务器要执行的命令,例如: “运行容器”.“停止容器”等. 在声明性API中,你声明系统要执行的操作,系统将不断向该状态驱动. 可以想象成手动驾驶和自动驾驶系统.( ...
- Mysql客户端软件
Mysql客户端软件Navicat,使用起来很方便; PremiumSoft Navicat for MySQL Enterprise Edition v8.0.27姓名(Name):3ddown.c ...
- final、finally、 finalize 有什么不同
感觉这三者除了长得像也没啥可作为比较的,但是面试题中经常会出现这三者的比较,就简单总结一下. 1.final final 可以用来修饰类.方法和变量,修饰类的时候表示类是不可以被继承的,修饰方法的时候 ...