zoukankan      html  css  js  c++  java
  • 《剑指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老师的前端补习班」关注我的微信公众号,那么就可以第一时间收到我的最新文章。

  • 相关阅读:
    str_replace函数的使用规则和案例详解
    phpqrcode.php 生成二维码图片用于推广
    常用的正则表达式验证
    Java:原生javaWeb下载pdf文件
    设计模式:七大原则
    Spring Boot:整合Hikari+Oracle+p6spy
    Spring Boot:开启全局事务
    Java8:按照对象的属性,对List集合分组
    SpringMVC统一异常处理
    JSR303校验的基本使用和结合AOP使用
  • 原文地址:https://www.cnblogs.com/pigpigever/p/13695305.html
Copyright © 2011-2022 走看看