zoukankan      html  css  js  c++  java
  • #21 合并排序后的两个链表

    思路

    使用三个游标:cur指向合并后链表的尾部,l1,l2分别用于遍历两个链表,较小的元素增加到合并后链表。

    小技巧

    使用冗余的头结点可以精简地判断一下情形,其中一个链表,或两个都为空链表。

    从而精简代码。

    朴素代码

    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            ListNode * head, *ptr;
            
            if (!l1 && !l2) return NULL;
            if (!l1 && l2)  return l2;
            if (l1 && !l2)  return l1;
            
            if (l1->val > l2->val) {
                head = l2;
                l2 = l2->next;
            } else {
                head = l1;
                l1 = l1->next;
            }
            ptr = head;
            while (l1 && l2) {
                if (l1->val <= l2->val) {
                    ptr->next = l1;
                    l1 = l1->next;
                } else {
                    ptr->next= l2;
                    l2 = l2->next;
                }
                ptr = ptr->next;
            }
            
            if (l1) {
                ptr->next = l1;
            } else {
                ptr->next = l2;
            }
            
            return head;
        }
    };

    优化代码

    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            ListNode dummy(0);
            ListNode *ptr = &dummy;
            while (l1 && l2) {
                if (l1->val <= l2->val) {
                    ptr->next = l1;
                    l1 = l1->next;
                } else {
                    ptr->next= l2;
                    l2 = l2->next;
                }
                ptr = ptr->next;
            }
            
            if (l1) {
                ptr->next = l1;
            } else {
                ptr->next = l2;
            }
            
            return dummy.next;
        }
    };
  • 相关阅读:
    【JVM】tomcat参数调整
    windows 资源监视器
    svn搭建相关
    mysqlli
    整理知识
    【刷题】洛谷 P4142 洞穴遇险
    【刷题】洛谷 P4143 采集矿石
    【刷题】BZOJ 4199 [Noi2015]品酒大会
    【刷题】BZOJ 2754 [SCOI2012]喵星球上的点名
    【刷题】BZOJ 3513 [MUTC2013]idiots
  • 原文地址:https://www.cnblogs.com/kinsang/p/7045603.html
Copyright © 2011-2022 走看看