将两个升序链表合并为一个新的?升序?链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。?
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
直接合并链表并且排序 : ?
void bubble_sort(struct ListNode *list1)//冒泡排序
{
struct ListNode *p=NULL,*pr=NULL;
int t;
for(p=list1;p->next!=NULL;p=p->next)
{
for(pr=p->next;pr!=NULL;pr=pr->next)
{
if(p->val>=pr->val)
{
t=p->val;
p->val=pr->val;
pr->val=t;
}
}
}
}
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
struct ListNode *p=list1,*pr=list2;
if(p==NULL && pr==NULL)//排除为空的可能
{
return p;
}
if(p!=NULL)//合并
{ while(p->next!=NULL)
{
p=p->next;
}
p->next=pr;
bubble_sort(list1);//排序
return list1;
}
else
{ while(pr->next!=NULL)
{
pr=pr->next;
}
pr->next=p;
bubble_sort(list2);
return list2;
}
}
执行用时:0 ms, 在所有?C?提交中击败了100.00%的用户
内存消耗:5.9 MB, 在所有?C?提交中击败了90.98%的用户
|