本文共 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/