【LC_Lesson7】---将两个有序链表合成新的一个有序链表
2024-10-08 05:50:24
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
太久没复习数据结构和C/C++的链表实现了,一时间感觉无从下手头蒙了半天,花了半天时间整理了下单链表的基本知识,同时整理了下单链表的前序插入和后续插入。如下链接
https://www.cnblogs.com/szhb-5251/p/11770322.html
一. 解题思路
思路一:
1) 两个链表均是有序的,而且各个节点也都是实际存在的,可以考虑重新拉一个链表出来,然后依次扫描两个有序链表,有序的将元素分别插入在新链表上面。一直到某条链表扫描结束,然后把另外一条链表剩余的元素插入在当前新链表的后面即可。
C++实现:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if(l1 == NULL)
return l2;
if(l2 == NULL)
return l1;
ListNode *p = l1;
ListNode *q = l2;
ListNode *result = new ListNode();
ListNode *r = result; while(q && p)
{
if (q->val < p->val)
{
r->next = q;
r = r->next;
q = q->next;
}
else
{
r->next = p;
r = r->next;
p = p->next;
}
}
if (q)
r->next = q;
if (p)
r->next = p;
return result->next;
}
};
思路二:
其次可以使用递归的方法,
最新文章
- C语言中两位ASCII码可以表示汉字
- 无刷新提交表单(非Ajax实现)
- mysql的小总结
- 利用反射将Datatable、SqlDataReader转换成List模型
- Ext.widget()作用是使用别名创建对象。
- BZOJ1584 [Usaco2009 Mar]Cleaning Up 打扫卫生
- urllib3 ProxyManager
- Path类型的扩展方法 z
- 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
- What I Have Lived For(我为什么而活着-罗素)
- 会员卡管理系统技术解析(十八)Timer定时监听
- vi 操作技巧
- 【BZOJ 3534】: [Sdoi2014]重建
- docker_weave
- 从虚拟机指令执行的角度分析JAVA中多态的实现原理
- android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
- 软件产品案例分析——福州大学微信小程序
- Pullword 分词工具
- java.sql.SQLException: com.mysql.jdbc.Driver
- Haskell语言学习笔记(50)Extra
热门文章
- Nutch2.3 编译
- Codeforces Round #561 (Div. 2) E. The LCMs Must be Large(数学)
- H3C 查看RIP的debugging信息
- 写一个js配合rem
- UVA 11400";Lighting System Design";
- JPA查询之Specification以及HQL、SQL查询
- linux /proc 接口
- 2018-2-13-WPF-异常-NativeWPFDLLLoader.LoadNativeWPFDLL
- [Python之路] 内存管理&;垃圾回收
- 【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。