合并两个排序的链表
- 参与人数:2725时间限制:1秒空间限制:32768K
- 通过比例:24.54%
- 最佳记录:0 ms|8552K(来自 大工zay)
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
新建一个链表然后遍历两个链表。
或者使用递归,面试没准考哪个。
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if(!pHead1){
return pHead2;
}else if(!pHead2){
return pHead1;
}else if(!pHead1&&!pHead2){
return NULL;
}
// if(pHead1->val<pHead2->val){
// pHead1->next=Merge(pHead1->next,pHead2);
//<span style="white-space:pre"> </span> return pHead1;
// }else{
// pHead2->next=Merge(pHead1,pHead2->next);
// return pHead2;
// }
ListNode* orderList=NULL;
if(pHead1->val<pHead2->val){
orderList=pHead1;
pHead1=pHead1->next;
}else{
orderList=pHead2;
pHead2=pHead2->next;
}
ListNode *res=orderList;
while(true){
if(!pHead1){
orderList->next=pHead2;
break;
}else if(!pHead2){
orderList->next=pHead1;
break;
}else{
if(pHead1->val<pHead2->val){
orderList->next=pHead1;
orderList=orderList->next;
pHead1=pHead1->next;
}else{
orderList->next=pHead2;
orderList=orderList->next;
pHead2=pHead2->next;
}
}
}
return res;
}