Java每日算法--将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

Posted lovoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java每日算法--将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。相关的知识,希望对你有一定的参考价值。

题目:

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2

输入:l1 = [], l2 = []
输出:[]
示例 3

输入:l1 = [], l2 = [0]
输出:[0]

来源:力扣(LeetCode)

链表节点

public class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

解法1

采用递归
ListNode res 第一次指向 l1与l2中头节点较小的值
将res.next 指向 res.next 或 l1与l2中较大的一个值

public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null){
            return l2;
        }
        if(l2 == null){
            return l1;
        }
        //保存小的
        ListNode res = l1.val < l2.val ? l1: l2;
        res.next = mergeTwoLists(res.next, l1.val > l2.val ? l1: l2);
        return res;
    }

以上是关于Java每日算法--将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:285.合并两个有序链表

《LeetCode之每日一题》:137.合并两个有序链表

每日LeetCode力扣(21~25)

21. 合并两个有序链表 Java

21. 合并两个有序链表 Java

Leetcode练习(Python):链表类:第21题:合并两个有序链表:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。