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

『力扣刷题本』:合并两个有序链表(递归解法)

一、题目

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

示例 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 均按 非递减顺序 排列

二、思路解析

既然是递归,我们就得考虑所有条件,方便我们给出限制条件,以防止程序无限地递归。

于是分析得出,有如下四种情况:

       1) list1 为空;

       2) list2 为空;

       3)list1 元素 < list2 元素;

       4)list2 元素 < list1 元素;

至于 1)和 2)情况,我们分别返回 list2 和 list1 即可,因为一个都为空了,肯定只能返回另一个了。

剩下另外两种,我们直接上递归即可。

值得一提的是,罗根我仔细想了一下,要是两个链表都为 null 这种情况呢?

最后我得出的结论是,直接返回 list2 ,因为在第一个 if 语句判断的时候,符合了条件,已经直接返回了!

最后再来看下完整代码吧~

三、完整代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode L3 = new ListNode();if(list1 == null){return list2;}        else if(list2 == null){return list1;}else  if(list1.val<list2.val){list1.next = mergeTwoLists(list1.next,list2);return list1;}else  {list2.next = mergeTwoLists(list2.next,list1);return list2;}}
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

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

相关文章:

  • C++设计模式_12_Singleton 单件模式
  • 67 内网安全-域横向smbwmi明文或hash传递
  • 面向对象(类/继承/封装/多态)详解
  • 【Python机器学习】零基础掌握GradientBoostingRegressor集成学习
  • 【tio-websocket】12、应用层包—Packet
  • OpenCV官方教程中文版 —— 模板匹配
  • 如何为3D模型设置自发光材质?
  • UI组件库基础
  • 数据结构与算法之矩阵: Leetcode 48. 旋转矩阵 (Typescript版)
  • 大厂面试题-JVM中的三色标记法是什么?
  • Leetcode—121.买卖股票的最佳时机【简单】
  • 【云原生】portainer管理多个独立docker服务器
  • Command集合
  • 【QT开发(17)】2023-QT 5.14.2实现Android开发
  • JVM相关面试题(每日一练)
  • OpenCV 相机相关函数
  • 微信小程序之投票管理
  • 23种设计模式【创建型模式】详细介绍之【建造者模式】
  • [量化投资-学习笔记002]Python+TDengine从零开始搭建量化分析平台-MA均线的多种实现方式
  • c语言 判断两个文件是否相同
  • 【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计
  • Java电商平台 - API 接口设计之 token、timestamp、sign 具体架构与实现|电商API接口接入
  • 【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述
  • python爬虫分析基于python图书馆书目推荐数据分析与可视化
  • Java零基础入门-关系运算符
  • 1200*A. Trust Nobody(贪心)
  • 二维码智慧门牌管理系统升级解决方案:采集项目的建立与运用
  • Azure - 机器学习:创建机器学习所需资源,配置工作区
  • 电脑监控软件哪些比较好用
  • 数据结构与算法之排序: 选择排序 (Javascript版)