Question21–Merge Two Sorted Lists
给定两个排好序的单链表,将它们归并在一起,并返回新链表的头指针。
算法
每次将两个链表的头比大小,小的头结点加入新的链表中,并将头小的那个链表的头指针后移。直到一个链表为空,将另一个链表的剩余部分加入新链表。
Code
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *now, *move;
now=move=new ListNode(0);
while(l1!=nullptr||l2!=nullptr){
if(l1==nullptr){
move->next=l2;
break;
}
if(l2==nullptr){
move->next=l1;
break;
}
if(l1->val<l2->val){
move=move->next=l1;
l1=l1->next;
}
else{
move=move->next=l2;
l2=l2->next;
}
}
move=now->next;
delete now;
return move;
}
算法时间复杂度
0(n)