题目:
题目截图:
解题步骤:
跟归并排序合并两个有序数组类似
1.新建一个新链表,作为返回结果
2.用指针遍历两个有序链表,并比较两个链表的当前节点,
较小者先接入新链表,并将指针后移一步
3.链表遍历结束,返回新链表
代码:
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var mergeTwoLists = function (l1, l2) {
const res = new ListNode(0);
let p = res;
let p1 = l1;
let p2 = l2;
while (p1 && p2) {
if (p1.val < p2.val) {
p.next = p1;
p1 = p1.next;
} else {
p.next = p2;
p2 = p2.next;
}
p = p.next;
}
if (p1) p.next = p1;
if (p2) p.next = p2;
return res.next;
};
时间复杂度分析:
时间复杂度是O(m + n),m是l1的节点个数,n是l2的节点个数
空间复杂度分析:
空间复杂度是O(1)
怎么样,是不是很简单,你学会了吗 ?
如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪 !!!