博客
关于我
【刷题1】LeetCode 21. 合并两个有序链表 java题解
阅读量:762 次
发布时间:2019-03-23

本文共 775 字,大约阅读时间需要 2 分钟。

合并两个有序链表的方法

单节点链表的定义

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 l1, ListNode l2) {
如果两个链表都为空,返回空节点
如果一个链表为空,直接返回另一个链表
初始化合并链表的顶部节点,并用临时节点跟踪当前位置
使用循环迭代,在两个链表都为空之前进行比较并合并节点
当某个链表遍历完毕后,将剩下的节点连接到结果链表中
返回合并后的链表起始节点
}

时间复杂度:O(n+m)

合并两个链表的时间复杂度是两个链表长度之和,主要是为了遍历每个节点

空间复杂度:O(1)
我们仅使用常数空间来存储几个变量,主要是对比操作和字段访问

递归方法

递归方法通过递归调用函数来解决问题,具有以下优势:
简单易懂,逻辑清晰,实现代码较为简洁
适合edu环境下学习和理解基本算法思想

代码示例

public ListNode mergeTwoLists(ListNode l1, ListNode l2) {      如果两个链表都为空,返回空节点      如果一个链表为空,直接返回另一个链表      否则,递归调用函数合并两头节点较小的链表      调用递归合并较大的链表剩余节点      最后将两部分连接起来  }

优点

  • 简单直观,易于理解
  • 适合递归训练,帮助掌握递归思想
  • 实现代码简洁,易于维护

转载地址:http://arczk.baihongyu.com/

你可能感兴趣的文章
PostgreSQL删除数据库报"ERROR: There is 1 other session using the database."
查看>>
PostgreSQL和Oracle两种数据库有啥区别?如何选择?
查看>>
PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案
查看>>
PostgreSQL学习总结(1)—— PostgreSQL 入门简介与安装
查看>>
PostgreSQL学习总结(2)—— PostgreSQL 语法
查看>>
PostgreSQL学习总结(3)—— PostgreSQL 数据类型
查看>>
PostgreSQL学习总结(6)—— PostgreSQL 模式(SCHEMA)详解
查看>>
PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
查看>>
PostgreSQL学习总结(8)—— PostgreSQL 基于数据库和基于模式(schema)的多租户分析
查看>>
PostgreSQL学习总结(9)—— PostgreSQL 运算符与表达式
查看>>
PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
查看>>
PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
查看>>
PostgreSQL学习笔记:PostgreSQL vs MySQL
查看>>
PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
查看>>
PostgreSQL导入shape数据(地图工具篇.10)
查看>>
PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
查看>>
PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
查看>>
Postgresql常用命令行操作_以及Navicat操作PostGis时的问题_自动截取长度_WKB structure does not match exp---PostgreSQL工作笔记005
查看>>
PostgreSQL忘记密码
查看>>
PostgreSQL数据库pg_dump命令行不输入密码的方法
查看>>