【LeetCode】Merge Two Sorted Lists

来源:互联网 发布:人工智能英文音标 编辑:程序博客网 时间:2024/05/22 10:41

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

思路:

不需要开辟新的链表

首元素小的链表的头作为新链表的头。

当一个链表的元素已经比较完时,另一个链表剩余的元素直接加到新链表的末尾即可。

/** * 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)     {        if(NULL == l1 && NULL == l2)            return NULL;        else if(NULL == l1 && NULL != l2)            return l2;        else if(NULL == l2 && NULL != l1)            return l1;                    ListNode *head = l1->val >= l2->val? l2 : l1;        ListNode *p = head->next;        ListNode *ret = head;        ListNode *q = l1->val >= l2->val? l1 : l2;                while(p && q)        {            if(p->val >= q->val)            {                ret->next = q;                ret = q;                q = q->next;            }            else            {                ret->next = p;                ret = p;                p = p->next;            }        }                while(p)        {            ret->next = p;            ret = p;            p = p->next;        }                while(q)        {            ret->next = q;            ret = q;            q = q->next;        }        return head;    }};


0 0
原创粉丝点击