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

【力扣】[Java版] 刷题笔记-21. 合并两个有序链表

题目: 21. 合并两个有序链表

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

解题思路

从题目和示例可以看出,应该是要循环遍历链表进行比较,然后组成新的链表。

第一种:递归

第二种:迭代

解题过程

第一种:递归

1、先判断两个链表是否为空,如果list1为空,则返回list2,如果list2为空,则返回list1。

2、如果都不为空,递归比较每个节点大小,直到最后一个节点。

/*** 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) {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(list1, list2.next);return list2;}}
}

第二种:迭代

1、先判断两个链表是否为空,如果list1为空,则返回list2; 如果list2为空,则返回list1。

2、其次创建新的链表,作为整个链表的头部head,再创建一个nextNode用于指向下一个节点,比较list1和list2的每个节点,将较小的节点赋值给nextNode。

3、最后返回head.next,即为新的链表。

/*** 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) {if (list1 == null) {return list2;} else if (list2 == null) {return list1;}ListNode head =  new ListNode(-1);ListNode nextNode = head;while (list1 != null && list2 != null) {if(list1.val < list2.val) {nextNode.next = list1;list1 = list1.next;  } else {nextNode.next = list2;list2 = list2.next;  }nextNode = nextNode.next;}nextNode.next = list1 == null ? list2 : list1;return head.next;}
}

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

相关文章:

  • 【Bug】RuntimeError: Engine loop has died
  • Labview写CIP协议
  • Redis批量获取缓存的方法
  • MySQL配置文件中server-id的作用是什么
  • Docker入门之构建
  • StarRocks数据库在SQL语句中解析JSON字符串
  • RabbitMq-队列交换机绑定关系优化为枚举注册
  • 施磊C++ | 项目实战 | 手写移植SGI STL二级空间配置器内存池 项目源码
  • C++ | Leetcode C++题解之第507题完美数
  • Git快速上手
  • 宝塔如何部署Django项目(前后端分离篇)
  • JavaScript解析JSON对象及JSON字符串
  • Elasticsearch 构建实时数据可视化应用
  • NVR批量管理软件/平台EasyNVR多个NVR同时管理:H.265与H.264编码优势和差异深度剖析
  • C/C++(六)多态
  • 汽车及零配件企业海量文件数据如何管
  • 【AI学习】Mamba学习(十二):深入理解S4模型
  • linux入门之必掌握知识点
  • 【Web.路由]——路由原理
  • Spring Boot技术在中小企业设备管理中的应用
  • Lua表(Table)
  • 51单片机应用开发(进阶)---外部中断(按键+数码管显示0-F)
  • 怎么区分主谓宾I love you与主系表I am fine? 去掉宾语看句子完整性 主系表结构则侧重于描述主语的状态、特征或性质
  • 私域流量运营的误区
  • VirtualBox虚拟机桥接模式固定ip详解
  • 面试问题基础记录24/10/24
  • 中国区 Microsoft365主页链接请您参考:
  • Go encoding/json库
  • 「实战应用」如何用图表控件LightningChart可视化天气数据?(二)
  • 苹果瑕疵数据集苹果质量数据集YOLO格式VOC格式 深度学习 目标检测 数据集