zoukankan      html  css  js  c++  java
  • LeetCode | 21. 合并两个有序链表

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

    示例:

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

    解法: 归并法

    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            ListNode *dummy = new ListNode(0);
            ListNode *cur = dummy;
            while(l1 && l2)
            {
                if(l1->val <l2->val)
                {
                    cur->next = l1;
                    l1 = l1->next;
                }
                else{
                    cur->next = l2;
                    l2 = l2->next;
                }
                cur = cur->next;
            }
            cur->next = l1 ? l1 :l2;//处理l1或者l2有剩余的情况
            return dummy->next;
        }
    };
    

    解法:递归法

    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            if(!l1)return l2;
            if(!l2)return l1;
            
            if(l1->val < l2->val){
                l1->next = mergeTwoLists(l1->next,l2);
                return l1;
            }
            else{
                l2->next = mergeTwoLists(l1 , l2->next);
                return l2;
            }
        }
    };
    
  • 相关阅读:
    IDEA的JDBC报错解决
    java注解
    Java反射
    javaIO
    工程师的认知
    前端的一些性能提升
    ES6函数的扩展
    2020新年愿望
    高维护性的javascript
    Chrome Dev tools的几点小技巧
  • 原文地址:https://www.cnblogs.com/RioTian/p/12547923.html
Copyright © 2011-2022 走看看