博客
关于我
【刷题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/

你可能感兴趣的文章
mysql执行计划怎么看
查看>>
MySQL执行计划解读
查看>>
mysql执行顺序与索引算法
查看>>
mysql批量update优化_Mysql中,21个写SQL的好习惯,你值得拥有呀
查看>>
mysql技能梳理
查看>>
Mysql报错Packet for query is too large问题解决
查看>>
Mysql报错:too many connections
查看>>
MySQL报错:无法启动MySQL服务
查看>>
mysql排序查询
查看>>
Mysql插入数据从指定选项中随机选择、插入时间从指定范围随机生成、Navicat使用存储过程模拟插入测试数据
查看>>
mysql操作数据表的命令_MySQL数据表操作命令
查看>>
mysql支持表情
查看>>
MySQL改动rootpassword的多种方法
查看>>
mysql数据分组索引_MYSQL之索引配置方法分类
查看>>
mysql数据取差,mysql屏蔽主外键关联关系
查看>>
MySQL数据和Redis缓存一致性方案详解
查看>>
Mysql数据库 InnoDB存储引擎中Master Thread的执行流程
查看>>
MySQL数据库 范式
查看>>
Mysql数据库B-Tree索引
查看>>
mysql数据库io空闲_mysql数据库磁盘io高的排查
查看>>