leetcode刷题6.合并有序链表——Java版

Posted 一条IT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题6.合并有序链表——Java版相关的知识,希望对你有一定的参考价值。

先提前剧透一下,大家要好好做这一题,因为148题会用到这一题…

——leetcode此题热评

前言

xdm,现在是早上8:14,窗外下着小雨

我是一条,我在做leetcode21

加油!

Question

难度:简单

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列

Solution

不知道大家还记得合并有序数组吗?

异曲同工

忘记的小伙伴可以先看一下

传送门1

  • l1l2 都不是空链表时,判断l1l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里。
  • 当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。
  • 将非空链表接在合并链表的后面
  • 对于链表操作,一般都需要维护一个当前节点的指针,可以再回看一下两数相加帮助理解

Code

所有leetcode代码已同步至github

欢迎star

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode l3 = new ListNode(-1);
        ListNode cur=l3;
        while (l1!=null&&l2!=null){
            if (l1.val <= l2.val) {
                cur.next = l1;
                l1 = l1.next;
            } else {
                cur.next = l2;
                l2 = l2.next;
            }
            cur=cur.next;
        }
        cur.next = l1 == null ? l2 : l1;
        return l3.next;

    }
}

Result

复杂度分析

  • 时间复杂度:O(m+n)


以上是关于leetcode刷题6.合并有序链表——Java版的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Java刷题笔记—21. 合并两个有序链表

[JavaScript 刷题] 链表 - 合并两个有序链表, leetcode 21

[JavaScript 刷题] 链表 - 合并两个有序链表, leetcode 21

LeetCode刷题--合并两个有序链表(简单)

Leetcode刷题Python21. 合并两个有序链表

Leetcode刷题100天—21. 合并两个有序链表( 链表)—day28