将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
知识点:递归
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
if(!list1){
return list2;
}
if(!list2){
return list1;
}
if(list1->val<=list2->val){
list1->next=mergeTwoLists(list1->next,list2);
return list1;
}
list2->next= mergeTwoLists(list1,list2->next);
return list2;
// if(!(list1||list2)){
// return nullptr;
// }
// ListNode* head = new ListNode(0,new ListNode());
// ListNode* list = head->next;
// while(list1||list2){
// bool r1=false;
// bool r2 = false;
// int v1=0;
// int v2=0;
// if(list1){
// v1=list1->val;
// r1=true;
// // ListNode* temp= list1->next;
// // list1=temp;
// }
// if(list2){
// r2=true;
// v2 = list2->val;
// // ListNode* temp= list1->next;
// // list1=temp;
// }
// if(!(r1&&r2)){
// if(r1){
// list->val=v1;
// list->next=new ListNode();
// // ListNode* temp= list1->next;
// list1=list1->next;
// }
// if(r2){
// list->val=v2;
// list->next=new ListNode();
// // ListNode* temp= list2->next;
// list2=list2->next;
// }
// }else{
// if(v1<v2){
// list->val=v1;
// list->next=new ListNode();
// // ListNode* temp= list1->next;
// list1=list1->next;
// }else if(v1>v2){
// list->val=v2;
// list->next=new ListNode();
// // ListNode* temp= list2->next;
// list2=list2->next;
// }else{
// // printf("------%d,%d\n",v1,v2);
// list->val=v1;
// // linked l = list->next;
// // list->next=new ListNode(v2,new ListNode());
// list->next = new ListNode();
// list->next->val =v2;
// list->next->next=new ListNode();
// // ListNode* temp= list1->next;
// list1=list1->next;
// // temp= list2->next;
// list2=list2->next;
// // temp= list;
// // list->val=temp->val;
// list=list->next;
// }
// }
// if(list1||list2){
// // ListNode *temp = list;
// list = list->next;
// }
// }
// list->next= nullptr;
// return head->next;
}
};