合并两个有序链表
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
思路:1.先判断l1和l2是否为空链表。
2.如果l1和l2一开始为空链表,那么没有任何操作需要合并,所以只需要返回非空链表。
3.判断l1和l2哪一个链表的头节点的值更小,然后递归的决定下一个添加到结果里的节点。
4.如果两个链表有一个为空,递归结束
复杂度分析
时间复杂度:O(n+m),其中n和m分别为两个链表的长度。每次只会递归调用每个节点一次。
空间复杂度:O(n+m),其中n和m分别为两个链表的长度。递归调用mergeTwoLists函数时需要消耗栈空间,栈空间的大小取决于递归调度的深度。结束递归调用时mergeTwoLists函数最多调用n+m次,此时空间复杂度为O(n+m)。