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

  • 相关阅读:
    css 模块化
    zookeeper集群-solrcloud集群
    Ansible
    Haproxy
    Saltstack数据系统
    Saltstack入门
    DNS(bind)添加A、CNAME、MX、PTR记录、智能DNS(ACL)
    主从同步DNS(BIND)
    单台DNS服务器搭建(BIND)
    python2.7多线程的批量操作远程服务器
  • 原文地址:https://www.cnblogs.com/hekuiFlye/p/12812639.html
Copyright © 2011-2022 走看看