传送门:
解题思路:按照依次比较大小的方式来进行计算,当有一个为空后,讲另一个完全接到新的数组上。
第一次提示runtime error时给出的测试用例是{},{},所以多添加了一句if(!l1 && !l2),完全没必要,应该是因为自己最后返回的是cur而不是head的缘故
图书馆闭关,明天试一下如果不是用指针而是用值会怎么样。
AC代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
//可不可以每次都用值,而不是指针来实现
class Solution {
public:
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
//这道题可以参考之前数据结构所做过的链表组合,一直找最大的就行
ListNode* head,*cur;
head=new ListNode(0);
cur=head;
//if(!l1 && !l2) return NULL;
while(l1 && l2)
{
if(l1->val<l2->val)
{
cur->next=l1;
l1=l1->next;
}
else
{
cur->next=l2;
l2=l2->next;
}
cur=cur->next;
}
while(l1)
{
cur->next=l1;
cur=cur->next;
l1=l1->next;
}
while(l2)
{
cur->next=l2;
cur=cur->next;
l2=l2->next;
}
return head->next;
}
};