1.问题描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

2.解决思路

1)非递归的方法

    如果可以改变链表,直接从头结点开始依次移动比较两个链表当前值的大小,把较小的值作为当前结点的下一个结点。

注意:刚刚开始的时候不知道头结点到底是1的还是2的,所以新建一个额外的新节点作为辅助:

 ListNode *first = new ListNode(-1);

返回first->next即为所求。

2)递归的方法

每次比较头结点node1和node2的值,如果把小的作为当前的结点,然后递归地比较下一个结点。

3.代码实现

1)非递归方法

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};*/
//非递归解决方法
class Solution {
public:ListNode* Merge(ListNode* node1, ListNode* node2){if (node1 == NULL) return node2;if (node2 == NULL) return node1;ListNode* first = new ListNode(-1);ListNode* tmp = first;while (node1 != NULL && node2 != NULL){if (node1->val <= node2->val){tmp->next = node1;node1 = node1->next;}else{tmp->next = node2;node2 = node2->next;}tmp = tmp->next;}if (node1 == NULL) tmp->next = node2;if (node2 == NULL) tmp->next = node1; return first->next;}
};

2)递归方法

class Solution {
public:ListNode* Merge(ListNode* node1, ListNode* node2){if(node1 == NULL) return node2;if(node2 == NULL) return node1;ListNode *head;if(node1->val <= node2->val){head = node1;head->next = Merge(node1->next, node2);}else{head = node2;head->next = Merge(node1, node2->next);}return head;}
};

剑指offer 25. 合并两个排序的链表相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

  2. LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表

    剑指 Offer 25. 合并两个排序的链表 Ideas 这题让我想到了归并排序: 划分问题:把序列分成元素个数尽量相等的两半: 递归求解:把两半元素分别排序: 合并问题:把两个有序表合并成一个. 捞 ...

  3. 【LeetCode】剑指 Offer 25. 合并两个排序的链表

    [LeetCode]剑指 Offer 25. 合并两个排序的链表 文章目录 [LeetCode]剑指 Offer 25. 合并两个排序的链表 一.递归 二.伪头节点 总结 一.递归 思路: 如果有一个 ...

  4. 剑指offer系列——剑指 Offer 25. 合并两个排序的链表

    ⭐️前面的话⭐️ 大家好!本篇文章将介绍关于数据结构之链表的OJ题,来自力扣:21. 合并两个有序链表 或 剑指 Offer 25. 合并两个排序的链表 题解,展示代码语言暂时为:Java语言与C语言 ...

  5. 【最佳解法】剑指 Offer 25. 合并两个排序的链表

    立志用最少的代码做最高效的表达 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1-> ...

  6. 【算法】剑指 Offer 25. 合并两个排序的链表

    文章目录 1.概述 2. 对比 3.递归 1.概述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 ...

  7. 剑指offer——25.合并两个排序的链表

    题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 知识点: -无 注意: 以后写代码前要在开头写出特殊的输入情况 递归认真考虑好输入和输出 代码实现 ...

  8. LeetCode-剑指 Offer 25. 合并两个排序的链表

    剑指 Offer 25. 合并两个排序的链表 思路一:双指针法 1.设置dummy为头结点,放置于新链表之前,最后返回的就是dummy.next:设置cur为当前节点,从dummy开始 2.当两个链表 ...

  9. 剑指Offer:合并两个排序的链表【25】

    剑指Offer:合并两个排序的链表[25] 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 每次都是比较箭头节点,把小节点连接到已经合 ...

最新文章

  1. 取得数组中的随机数random.nextInt(index)
  2. Spring Security 实战:Spring Boot 下的自动配置
  3. Mybaits 运行原理流程图
  4. 如何使用Spring设置安全的REST API
  5. 申请购买计算机的报告,关于申请购买电脑的请示(最新整理)
  6. bp神经网络数字识别matlab_卷积神经网络学习识别手写数字时的可视化
  7. 在一个机器上创建多个独立Firefox运行环境
  8. 牛腩新闻发布--.NET控件FreeTextBox使用方法
  9. Word把普通表格改为三线表格的方法
  10. JPG、PNG和GIF图片的基本原理及优化方法
  11. 【Redis系列】Redis 入门指南
  12. 在服务器上安装centos系统
  13. 数据分析-Excel函数练习
  14. CSS display属性 – 不显示、显示表格、内联块等
  15. 2022年强网杯rcefile wp
  16. trivial、standard layout、POD和literal类型解析
  17. python将xls转换为xlsx_python – 如何将xls转换为xlsx
  18. html实现跳跳棋游戏,原生JS实现的跳一跳小游戏完整实例
  19. 阶段三-02 用例之间上下文传递
  20. 笔记本怎么编html,笔记本win7深度技术旗舰版使用记事本编辑和运行html代码的方法...

热门文章

  1. android系统如何获取imei号码,获取手机型号和系统版本号
  2. 华为手机显示碎片整理图标
  3. python编写一个投票选班长_一个简单的Python自动投票
  4. 高中计算机教师考试专业知识,教师考试大纲《信息技术学科知识与教学能力》(高中)...
  5. 远程鼠标,键盘,云鼠标
  6. 学习笔记 | 多态案例2-制作饮品
  7. 毕设分享 STM32单片机的智能手环 - 蓝牙手环 物联网
  8. 社交APP开发将依托大数据与网络算法?
  9. 架设Wikipedia的本地镜像
  10. Python 操作腾讯对象存储(COS)详细教程