今儿把昨天未通过的力扣改进了一下,编译通过了!
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *merge( ListNode *l1,ListNode *l2)
{
ListNode* head=new ListNode(0);
ListNode* ss=head;
while(l1!=NULL&&l2!=NULL)
{
if(l1->val>=l2->val)
{
ss->next=l2;
ss=ss->next;
l2=l2->next;
}
else
{
ss->next=l1;
l1=l1->next;
ss=ss->next;
}
}
if(l1!=NULL)
ss->next=l1;
else ss->next=l2;
return head->next;
}
ListNode* mergeKLists(vector<ListNode*>& lists)
{ int l=lists.size();
int i;
if(l == 0)
return NULL;
if(l== 1)
return lists[0];
if(l== 2){
return merge(lists[0],lists[1]);
}
ListNode* res=lists[0];
for(i=1;i<l;i++)
{
res=merge(res,lists[i]);
}
return res;
}
};
主要问题是merge函数的建立:关于传参我参考的是评论区的答案,函数类型为ListNode*型,实参为Lists[0]等,形参为ListNode* l1等,还有就是返回值,是head->next还是head有时候需要试验一下。
PAT第三题看了半天没看懂,百度看了解析才懂……嗯 明儿继续!