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;
        }
    };
  • 相关阅读:
    算法图解
    Cairo graphics tutorial
    远程对象调用
    异步和多线程的关系
    jQuery调用api
    GTK# tutorial
    DLT
    protobuf入门笔记
    PDO讲解
    数据库练习——分页查询
  • 原文地址:https://www.cnblogs.com/kinsang/p/7045603.html
Copyright © 2011-2022 走看看