将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode *head=NULL;
struct ListNode *tmp;
struct ListNode *ret=NULL;
while(l1&&l2)
{
if(l1->val<l2->val)
{
tmp=l1;
l1=l1->next;
}
else
{
tmp=l2;
l2=l2->next;
}
if(!head)
{
head=tmp;
ret=head;
}
else
{
ret->next=tmp;
ret=ret->next;
}
}
while(l1)
{
if(!head)
{
return l1;
}
else
{
ret->next=l1;
ret=ret->next;
l1=l1->next;
}
}
while(l2)
{
if(!head)
{
return l2;
}
else
{
ret->next=l2;
ret=ret->next;
l2=l2->next;
}
}
if(ret)
{
ret->next=NULL;
}
return head;
}
执行用时 : 4 ms, 在Merge Two Sorted Lists的C提交中击败了99.85% 的用户
内存消耗 : 7.4 MB, 在Merge Two Sorted Lists的C提交中击败了79.90% 的用户