• 《剑指offer》—— 合并两个排序的链表


    点我看原题
    点我看原文

    题目描述

    输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

    示例

    输入: 1->2->4, 1->3->4
    输出: 1->1->2->3->4->4

    解题思路

    1. 循环比较两个链表,较小的节先插入新链表中,直至两个链表为空;
    2. 递归比较两个链表,逻辑同上。

    示例代码

    循环比较

    /**
     * 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) {
        // 定义新链表
        let head = new ListNode()
        let list = head
        // 循环比对大小
        while (l1 && l2) {
            let val = 0
            if (l1.val <= l2.val) {
                val = l1.val
                l1 = l1.next
            } else {
                val = l2.val
                l2 = l2.next
            }
            list.next = new ListNode(val)
            list = list.next
        }
        list.next = l1 || l2
        // 返回合并后的新链表
        return head.next
    };
    

    递归比较

    /**
     * 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 && !l2) {
            return null
        }
        if (l1 && !l2) {
            return l1
        }
        if (!l1 && l2) {
            return l2
        }
        let node = new ListNode()
        if (l1.val <= l2.val) {
            node.val = l1.val
            node.next = mergeTwoLists(l1.next, l2)
        } else {
            node.val = l2.val
            node.next = mergeTwoLists(l1, l2.next)
        }
        return node
    };
    

    搜索「tony老师的前端补习班」关注我的微信公众号,那么就可以第一时间收到我的最新文章。

  • 相关阅读:
    【模拟练习】[一]
    【搜索练习】【二】
    【搜索练习】【一】
    模板整理 (施工中 2017.8.30更新)
    常用STL整理 (施工中 2017.8.11更新)
    剑指Offer 反转链表
    剑指Offer 链表中倒数第k个结点
    剑指Offer 斐波那契数列
    剑指Offer 用两个栈实现队列
    剑指Offer 从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/pigpigever/p/13695305.html
Copyright © 2020-2023  润新知