将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入: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;
}
};

 思路二:

  其次可以使用递归的方法,

												

最新文章

  1. C语言中两位ASCII码可以表示汉字
  2. 无刷新提交表单(非Ajax实现)
  3. mysql的小总结
  4. 利用反射将Datatable、SqlDataReader转换成List模型
  5. Ext.widget()作用是使用别名创建对象。
  6. BZOJ1584 [Usaco2009 Mar]Cleaning Up 打扫卫生
  7. urllib3 ProxyManager
  8. Path类型的扩展方法 z
  9. 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋
  10. What I Have Lived For(我为什么而活着-罗素)
  11. 会员卡管理系统技术解析(十八)Timer定时监听
  12. vi 操作技巧
  13. 【BZOJ 3534】: [Sdoi2014]重建
  14. docker_weave
  15. 从虚拟机指令执行的角度分析JAVA中多态的实现原理
  16. android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
  17. 软件产品案例分析——福州大学微信小程序
  18. Pullword 分词工具
  19. java.sql.SQLException: com.mysql.jdbc.Driver
  20. Haskell语言学习笔记(50)Extra

热门文章

  1. Nutch2.3 编译
  2. Codeforces Round #561 (Div. 2) E. The LCMs Must be Large(数学)
  3. H3C 查看RIP的debugging信息
  4. 写一个js配合rem
  5. UVA 11400&quot;Lighting System Design&quot;
  6. JPA查询之Specification以及HQL、SQL查询
  7. linux /proc 接口
  8. 2018-2-13-WPF-异常-NativeWPFDLLLoader.LoadNativeWPFDLL
  9. [Python之路] 内存管理&amp;垃圾回收
  10. 【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。