本文共 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(1)我们仅使用常数空间来存储几个变量,主要是对比操作和字段访问递归方法
递归方法通过递归调用函数来解决问题,具有以下优势:简单易懂,逻辑清晰,实现代码较为简洁适合edu环境下学习和理解基本算法思想public ListNode mergeTwoLists(ListNode l1, ListNode l2) { 如果两个链表都为空,返回空节点 如果一个链表为空,直接返回另一个链表 否则,递归调用函数合并两头节点较小的链表 调用递归合并较大的链表剩余节点 最后将两部分连接起来 }
转载地址:http://arczk.baihongyu.com/