首页 > 其他 > 详细

leetcode21 合并两个有序链表

时间:2020-05-01 11:07:39      阅读:47      评论:0      收藏:0      [点我收藏+]

题目

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

示例:

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

代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode dhead = new ListNode(-1);
        ListNode r = dhead;
        while(l1!=null&&l2!=null){
            if(l1.val<=l2.val){
                r.next = l1;
                r = l1;
                l1 = l1.next;
            }else{
                r.next = l2;
                r = l2;
                l2 = l2.next;
            }
        }
        if(l1!=null)
            r.next = l1;
        if(l2!=null)
            r.next = l2;

        return dhead.next;
    }
}

时间复杂度:O(n + m)O(n+m) ,其中 nn 和 mm 分别为两个链表的长度。因为每次循环迭代中,l1 和 l2 只有一个元素会被放进合并链表中, 因此 while 循环的次数不会超过两个链表的长度之和。所有其他操作的时间复杂度都是常数级别的,因此总的时间复杂度为 O(n+m)O(n+m)。

空间复杂度:O(1)O(1) 。我们只需要常数的空间存放若干变量。

 

leetcode21 合并两个有序链表

原文:https://www.cnblogs.com/hekuiFlye/p/12812639.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!