题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
 
题解:
  使用普通方法,或者递归,注意新的头节点即可。
  

 //使用普通的合并方法
class Solution01 {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if (pHead1 == nullptr || pHead2 == nullptr)return pHead1 == nullptr ? pHead2 : pHead1;
ListNode* newHead = nullptr, *p1 = nullptr, *p2 = nullptr;
newHead = new ListNode();
newHead->next = pHead1;
p1 = newHead;
p2 = pHead2;
while (p1->next != nullptr && p2 != nullptr)
{
if (p1->next->val < p2->val)
p1 = p1->next;
else
{
ListNode* temp = p1->next;
p1->next = p2;
p2 = p2->next;
p1->next->next = temp;
p1 = p1->next;
}
}
if (p1->next == nullptr && p2 != nullptr)
p1->next = p2;
return newHead->next;
}
}; //使用递归
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if (pHead1 == nullptr || pHead2 == nullptr)return pHead1 == nullptr ? pHead2 : pHead1;
ListNode* newHead = nullptr;
if (pHead1->val < pHead2->val)
{
newHead = pHead1;
newHead->next = Merge(pHead1->next, pHead2);
}
else
{
newHead = pHead2;
newHead->next = Merge(pHead1, pHead2->next);
}
return newHead;
}
};

最新文章

  1. Redis初识、设计思想与一些学习资源推荐
  2. iOS ARC模式 内存管理
  3. SQL SERVER 安全性体系
  4. OP和DBA相关的一些有用资源
  5. 使用 IL 实现类型转换
  6. winserver2008,运行可执行文件,提示 激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.DebugCRT,processorArchitecture=&quot;x86&quot;
  7. SQLSERVER2000以上 Ad Hoc Distributed Queries的启用与关闭
  8. JVM参数配置大全
  9. android monkey测试学习
  10. spring源码系列(一)sring源码编译 spring源码下载 spring源码阅读
  11. unity实现玻璃效果
  12. Alignment And Compiler Error C2719 字节对齐和编译错误C2719
  13. C#常用的单元测试框架
  14. 如何处理Excel空行问题
  15. 2009 ACM 水题
  16. SpringMVC知识点
  17. Git的简单操作
  18. 【c++基础】vector中按照Point类型某一个变量进行排序
  19. Answer the questions(回答自己的问题)
  20. IIS 使用多个https和通配证书解决方案

热门文章

  1. mysql笔试题大餐---2、exists加一些查询
  2. Robotframework之下拉列表select
  3. Linux中断机制
  4. springMVC整合swagger(亲自试验完全可用)
  5. 机器学习技法笔记:Homework #8 kNN&amp;RBF&amp;k-Means相关习题
  6. 技巧&amp;注意事项合集
  7. 使用Python将字符串转换为格式化的日期时间字符串
  8. 【HDUOJ】4280 Island Transport
  9. VisualStuido中将C#脚本封装打包DLL并调用
  10. Async await 异步编程说明