当前位置: 首页 > news >正文

合并两个有序链表——递归解法

题目描述

21. 合并两个有序链表

难度简单2922收藏分享切换为英文接收动态反馈

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

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]

输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []

输出:[]

示例 3:

输入:l1 = [], l2 = [0]

输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]

  • -100 <= Node.val <= 100

  • l1 和 l2 均按 非递减顺序 排列

刚接触这道题时 我根本就没想到要用递归 看了一下其他人的解法 感觉递归还不错 分享给你们

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*///我做为刚入门的新手 我来分享一下这道题的解题思路 (参考他人 如有不对望指教)
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{//最终比较完之后肯定有一个为空if(list1 == NULL){return list2;//将非空的返回}if(list2 == NULL){return list1;}//如何调用 if(list1->val < list2->val){//小的节点 指向下一个 较小的节点   list1->next = mergeTwoLists(list1->next,list2);return list1;//不知道两个链表第一个节点谁小 如果list1小返回list1的地址}else{list2->next = mergeTwoLists(list2->next,list1);return list2;}
}

思路:首先确定两个链表中首个节点那个小 再调用该函数去判断该节点的下一个节点与另外一条链表的节点的大小关系 返回小的节点地址 (调用与返回 在一个层面只不过 不是同时进行 需要你了解一下递归的思路) 如此反复就将两个链表合并了

对于刚开始判断链表为空 应该放在最前面 不然链表为空 接下来的代码中可能会越界访问

题目来源于leetcode21题解

希望你能从中受益~

http://www.lryc.cn/news/14267.html

相关文章:

  • ADRC自抗扰控制总结
  • 3年工作之后是不是还在“点点点”,3年感悟和你分享....
  • 【自动化测试】web自动化测试验证码如何测?如何处理验证码问题?解决方案......
  • 面试浅谈之 C++ STL 篇
  • 【PTA Advanced】1144 The Missing Number(C++)
  • oracle的sqlnet.ora文件配置传输加密算法
  • RK3568存储性能测试
  • Homekit智能家居一智能灯泡
  • 轻量级 Java 权限认证框架——Sa-Token
  • 算法复习(四、五、六)
  • SORT与DeepSORT简介
  • TCP/IP网络编程——多播与广播
  • K8S DNS解析过程和延迟问题
  • 【JavaScript】js实现深拷贝的方法
  • RK3288 GPIO记录
  • MongoDB介绍及使用教程
  • 51单片机开发环境搭建 - VS Code 从编写到烧录
  • python datetime、字符串和时间戳之间的相互转换12小时制和24小时制时间相互转化
  • 百度百科词条怎么做?百度百科词条创建攻略分享
  • 基于Hive的河北新冠确诊人数分析系统的设计与实现
  • k8s二进制部署
  • Windows出现0xc00d36e5错误怎么办?
  • Idea搭建Spring5.3.x源码阅读环境
  • 2.20jdbc
  • 【代码随想录训练营】【Day19休息】【Day20】第六章|二叉树|654.最大二叉树|617.合并二叉树|700.二叉搜索树中的搜索|98.验证二叉搜索树
  • 华为云计算之容灾技术
  • React系列之Redux
  • 最简单得方法解决TCP分包粘包问题
  • 免费使用通配符域名证书
  • 0基础成功转行Python自动化测试工程师,年薪30W+,经验总结都在这(建议收藏)