• [LeetCode] Merge Two Sorted Lists


    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

    此题为两个链表的合并,合并后的表头节点不一定,故应联想到使用dummy节点。链表节点的插入主要涉及节点next指针值的改变,两个链表的合并操作则涉及到两个节点的next值变化,若每次合并一个节点都要改变两个节点next的值且要对NULL指针做异常处理,势必会异常麻烦。嗯,第一次做这个题时我就是这么想的… 下面看看相对较好的思路。

    首先dummy节点还是必须要用到,除了dummy节点外还引入一个lastNode节点充当下一次合并时的头节点。在l1或者l2的某一个节点为空指针NULL时,退出while循环,并将非空链表的头部链接到lastNode->next中。

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
            ListNode* dummy = new ListNode(0);
            ListNode* cur = dummy;
            while (l1 != nullptr && l2 != nullptr) {
                if (l1->val < l2->val) {
                    cur->next = l1;
                    l1 = l1->next;
                }
                else {
                    cur->next = l2;
                    l2 = l2->next;
                }
                cur = cur->next;
            }
            cur->next = (l1 != nullptr) ? l1 : l2;
            return dummy->next;
        }
    };
    // 12 ms
  • 相关阅读:
    51Nod 1080
    51Nod 1015 水仙花数
    51Nod 1009 数字1的个数 | 数位DP
    Java中Native关键字的作用
    【Java关键字-Interface】为什么Interface中的变量只能是 public static final
    JAVA8 十大新特性详解
    深入理解final关键字
    Linux 在线模拟器
    jdk1.7和jdk1.8区别
    Java高新技术第一篇:类加载器详解
  • 原文地址:https://www.cnblogs.com/immjc/p/7414036.html
Copyright © 2020-2023  润新知