leetcode 21 合并两个有序链表 JavaScript解题

本题连接 leetcode-cn.com/problems/me…
这道题是一道链表的题目,咱们能够用递归来实现,直接贴代码:bash

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @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
    }
};
复制代码

咱们用L1和L2表明两个链表,递归的思路以下:ui

  • 若是L1为空就返回L2,L2为空就返回L1;
  • L1和L2的val做比较,若是L1的val更小,就将L1的next指向后续的节点,在后续的节点里,又让L1.next与L2的val做比较,谁更小,就又让谁的next指向后续的节点。以后继续重复以前的步骤,L2同理。

假设L1的长度为m,L2的长度为n,时间复杂度为o(m + n)。this

相关文章
相关标签/搜索