此次作業一開始犯了兩個錯誤:
1. 新建節點時,應該使用new進行創建,要理解清楚節點和指針的區別
2. 在之後拼接時,一開始錯誤的使用了while,導致無限循環,引起超時,注意if和while的使用
3.頭指針和尾指針的使用
//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 *ret = ListNode(0);寫法錯誤,均差一個new
//ListNode *l3 = ListNode(min(l1->val,l2->val));
ListNode *ret = new ListNode(0);//新節點一定要重新分配內存
ListNode *L1 = l1;
ListNode *L2 = l2;
ListNode *L3 = ret;
while(L1&&L2){
if(L1->val < L2->val){
L3->next = L1;
L3 = L3->next;
L1 = L1->next;
}
else{
L3->next = L2;
L3 = L3->next;
L2 = L2->next;
}
}
//while(L1)之前最開始的時候,用的while,這樣會無限循環下去。
if(L1){
L3->next = L1;
}
if(L2){
L3->next = L2;
}
return ret->next;
}
};