zoukankan      html  css  js  c++  java
  • leetcode21 合并两个有序链表

    题目

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

    示例:

    输入: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) 。我们只需要常数的空间存放若干变量。

  • 相关阅读:
    maven更新远程仓库速度太慢解决方法
    maven安装配置
    myeclipse中配置maven
    java数组的常用函数
    在数组中插入元素
    MySQL的表使用
    MySQL的数据库与表格创建
    节点的添加与删除
    html常用的综合体
    标签的类添加与删除
  • 原文地址:https://www.cnblogs.com/hekuiFlye/p/12812639.html
Copyright © 2011-2022 走看看