一开始用循环写 time limit exceeded了
也不知道为啥
原来的
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if(!l1){
return l2;
}
if(!l2){
return l1;
}
struct ListNode* result;
result=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* temp=result;
while(l1&&l2){
if(l1->val>l2->val){
result->val=l2->val;
l2=l2->next;
}else{
result->val=l1->val;
l1=l1->next;
}
result->next=(struct ListNode*)malloc(sizeof(struct ListNode));
result=result->next;
}
while(l1){
result->val=l1->val;
result->next=(struct ListNode*)malloc(sizeof(struct ListNode));
result=result->next;
l1=l1->next;
}
while(l2){
result->val=l2->val;
result->next=(struct ListNode*)malloc(sizeof(struct ListNode));
result=result->next;
l2=l2->next;
}
return temp;
}
后来看网上 用递归写
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
if(!l1){
return l2;
}
if(!l2){
return l1;
}
if(l1->val>l2->val){
l2->next=mergeTwoLists(l1,l2->next);
return l2;
}else{
l1->next=mergeTwoLists(l1->next,l2);
return l1;
}
}
最基本情况就是一个空的时候
就返回另外一个
然后就从头比较如果一个值大于另外一个就 接上去
道理都懂 然后自己目前咋写不出来
可能多写写就行了吧?