zoukankan      html  css  js  c++  java
  • leetcode-mergeTwoLists

    题目链接

    merge-two-sorted-lists

    题目内容:

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

    示例

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

    解题思路

      1. 声明一个新链表l;
      2. 判空l1和l2,有空就返回另一个链表;
      3. 对比l1和l2的第一个节点数值,把数值小的加入新链表l;
      4. 重复执行3,直到有一个链表为空,把非空链表加入l
      5. 返回。
    

    代码

    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            ListNode* preHead = new ListNode(-1);
            ListNode* prev = preHead;
            while (l1 != nullptr && l2 != nullptr) {
                if (l1->val < l2->val) {
                    prev->next = l1;
                    l1 = l1->next;
                } else {
                    prev->next = l2;
                    l2 = l2->next;
                }
                prev = prev->next;
            }
    
            // 合并后 l1 和 l2 最多只有一个还未被合并完,我们直接将链表末尾指向未合并完的链表即可
            prev->next = l1 == nullptr ? l2 : l1;
            return preHead->next;
        }
    };
    
  • 相关阅读:
    基于策略模式简单实现element表单校验
    跨域
    原型模式
    单例模式
    vue-router进阶篇
    vue-router
    h5深度剖析
    js同步异步,任务队列
    JavaScript中事件委托(事件代理)详解
    网络请求get和post的区别
  • 原文地址:https://www.cnblogs.com/unclejokermr/p/13967087.html
Copyright © 2011-2022 走看看