为什么答案不对
class Solution {
public:/**
* 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) {}
* };
*/
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
ListNode*p=new ListNode();
ListNode*l=new ListNode(0,list1);
ListNode*r=new ListNode(0,list2);
ListNode*ans=p;
while(l->next&&r->next){
if ((l->next->val)<(r->next->val)){
p->next=l->next;
l=l->next;
}
else{
p->next=r->next;
r=r->next;
}
p=p->next;
}
if(l->next){
p->next=l->next;
}
if(r->next){
p->next=r->next;
}
return ans->next;
}
};
我把前驱列表换成直接用list1和list2就对了
/**
* 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) {
ListNode*p=new ListNode();
ListNode*ans=p;
while(list1&&list2){
if ((list1->val)<(list2->val)){
p->next=list1;
list1=list1->next;
}
else{
p->next=list2;
list2=list2->next;
}
p=p->next;
}
if(list1){
p->next=list1;
}
if(list2){
p->next=list2;
}
return ans->next;
}
};

class Solution {
public:/**
* 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) {}
* };
*/
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
ListNode*p=new ListNode();
ListNode*l=new ListNode(0,list1);
ListNode*r=new ListNode(0,list2);
ListNode*ans=p;
while(l->next&&r->next){
if ((l->next->val)<(r->next->val)){
p->next=l->next;
l=l->next;
}
else{
p->next=r->next;
r=r->next;
}
p=p->next;
}
if(l->next){
p->next=l->next;
}
if(r->next){
p->next=r->next;
}
return ans->next;
}
};
我把前驱列表换成直接用list1和list2就对了
/**
* 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) {
ListNode*p=new ListNode();
ListNode*ans=p;
while(list1&&list2){
if ((list1->val)<(list2->val)){
p->next=list1;
list1=list1->next;
}
else{
p->next=list2;
list2=list2->next;
}
p=p->next;
}
if(list1){
p->next=list1;
}
if(list2){
p->next=list2;
}
return ans->next;
}
};
