LeetCode--Merge Two Sorted Lists

Question

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.

解决思路

当看到这个题的时候,第一反应就是归并排序,只不过是在两个列表上做而已。 但是题目也没说是两个从大到小的序列还是从小到大的序列,或者两者都有。

列表上做归并排序有个技巧就是增加一个头结点,方便输出结果。 简单说一下归并排序:就是遍历两个列表,哪个列表中的值小就输出哪个值,然后指针后移。

实现代码

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        ListNode* head = new ListNode(0);
        ListNode* ptr = head;    // 表示当前最后输出的点
        ListNode* cur = NULL;    // 表示当前将要输出的点
        while(l1 != NULL && l2!= NULL) {
            if (l1->val <= l2->val) {
                cur = l1;
                l1 = l1->next;
            } else {
                cur = l2;
                l2 = l2->next;
            }
            ptr->next = cur;
            ptr = ptr->next;

        }
        if (l2 == NULL) {
            ptr->next = l1;
        }
        if (l1 == NULL) {
            ptr->next = l2;
        }
        return head->next;
    }
};
posted @ 2017-02-22 23:08  清水汪汪  阅读(109)  评论(0编辑  收藏  举报