zoukankan      html  css  js  c++  java
  • 【每日一题-leetcode】 21. 合并两个有序链表

    21. 合并两个有序链表

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

    示例:

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

    1.迭代

    th:主要是通过定义一个head节点 遍历两个链表就可以,最后一定会有一个链表没有遍历完 使用三目运算符进行算

    需要注意的点 因为head节点一直next next下去 所以应该定义一个root节点 作为根节点 head节点 一直next下去。返回的是root节点

    time:O(m+n)

    space:O(1)

      /*
            *思路 主要是通过定义一个head节点 遍历两个链表就可以,最后一定会有一个链表没有遍历完 使用三目运算符进行算
            notice 因为head节点一直next next下去 所以应该定义一个root节点 作为根节点 head节点 一直next下去。返回的是root节点
            */
            public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
                if(l1 == null || l2 == null){
                    return null;
                }
        
                ListNode root = new ListNode(-1);
        
                ListNode head = root;
        
                while(l1!=null && l2!= null){
                    if(l1.val <= l2.val){
                        head.next = l1;
                        l1 = l1.next; 
                    }else{
                        head.next = l2;
                        l2 = l2.next;
                    }
                    head = head.next;
                }
        
                head.next = (l1 == null ? l2 : l1);
        
                return root.next;
            }
    

    2.递归

    th:其实如果一个方法可以迭代就可以递归解决,但是递归代码虽然简洁 理解上比较难一些,递归代码无非就是 三点需要注意:1 终止条件 2. 业务逻辑 3.解决下一个子问题 也就是 调用自身。

    time:O(m+n)

    space:调用 mergeTwoLists 退出时 l1 和 l2 中每个元素都一定已经被遍历过了,所以 n + mn+m 个栈帧会消耗 O(n + m)O(n+m) 的空间。

      public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
               if(l1 == null ){
                   return l2;
               }else if(l2 ==  null){
                   return l1;
               }else if(l1.val < l2.val){
                   l1.next = mergeTwoLists(l1.next,l2);
                   return l1;
               }else {
                   l2.next = mergeTwoLists(l1,l2.next);
                   return l2;
               }
            }
    
  • 相关阅读:
    Jmeter之断言处理
    JMeter工具简单介绍
    TCP的三次握手和四次挥手
    浅谈cookie、session
    浅谈HTTP中Get与Post的区别
    DNS原理入门
    互联网协议简介
    测试与部署
    部分代码片段
    apache和php扩展问题
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860680.html
Copyright © 2011-2022 走看看