题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
设定一个头结点pre,并设定一个移动节点指针cur。
当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到头结点 pre 里,当一个节点被添加到头结点里 pre 之后,将对应链表中的节点向后移一位,并移动移动节点指针 cur。
最后判断是否有一个链表为空,是的话 cur 的下一个就是另一个链表的对应位置。
时间复杂度O(m+n),m,n为两个链表的长度,空间复杂度O(1)。
var mergeTwoLists = function(l1, l2) {
var pre = new ListNode();
var cur = pre;
while(l1&&l2){
if(l1.val>l2.val){
cur.next = l2;
l2 = l2.next;
}else{
cur.next = l1;
l1 = l1.next;
}
cur = cur.next;
}
cur.next = l1===null?l2:l1;
return pre.next;
};
本文为作者关于LeetCode的解法
大神解法请自行搜索
本文使用的是迭代法,有兴趣的同学可以搜索一下递归法