leetcode-21-合并两个有序链表

// https://leetcode-cn.com/problems/merge-two-sorted-lists/
/**

  • @param {ListNode} l1

  • @param {ListNode} l2

  • @return {ListNode}
    */
    // 方法一:递归
    var mergeTwoLists = function(l1, l2) {
    if (l1 === null) return l2;
    if (l2 === null) return l1;

    if (l1.val < l2.val) {
    l1.next = mergeTwoLists(l1.next, l2);
    return l1;
    } else {
    l2.next = mergeTwoLists(l1, l2.next);
    return l2;
    }
    };

// 方法二:迭代
var mergeTwoLists = function(l1, l2) {
var preHead = new ListNode(-1);
var prev = preHead;

while(l1 !== null && l2 !== null) {
if (l1.val <= l2.val) {
prev.next = l1;
prev = l1;
l1 = l1.next;
} else {
prev.next = l2;
prev = l2;
l2 = l2.next;
}
}
// 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
if (l1 !== null) {
prev.next = l1;
} else if (l2 !== null) {
prev.next = l2;
}
return preHead.next;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容