原題地址:https://leetcode.com/problems/add-two-numbers/
用while循環把比較長的鏈表後面剩餘部分新建內存給node可以,但是我想直接把node
的下一個結點直接連接到輸入鏈表中比較長的那一個,不用新建內存去給輸出結果,一
直輸出錯誤;這點實在不明白爲什麼?可能是不能直接使用輸入鏈表的內存返回吧?下
面是實現代碼。
class Solution {
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
while(!l1) return l2;
while(!l2) return l1;
ListNode *result=NULL,*temp=NULL,*node=NULL;
int in=0,tempadd=0;//進位與臨時和
while(l1&&l2)//NULL&&NULL=NULL
{
tempadd=l1->val+l2->val+in;
temp=new ListNode(tempadd%10);
in=tempadd/10;
if(!result)
result=temp;
else
node->next=temp;
node=temp;
l1=l1->next;
l2=l2->next;
tempadd=0;
}
while (l1)
{
tempadd=l1->val+in;
temp = new ListNode(tempadd%10);
in = tempadd / 10;
node->next = temp;
node = temp;
l1 = l1->next;
}
while (l2)
{
tempadd=l2->val+in;
temp = new ListNode(tempadd%10);
in = tempadd / 10;
node->next = temp;
node = temp;
l2 = l2->next;
}
/*if(l1)
{
tempadd=l1->val+in;
l1->val=tempadd/10;
node->next=l1;
node=l1;
if(tempadd%10>0)
{
node->next->val+=tempadd%10;
}
return result;
}
if(l2)
{
tempadd=l2->val+in;
l2->val=tempadd/10;
node->next=l2;
node=l2;
if(tempadd%10>0)
{
node->next->val+=tempadd%10;
}
return result;
}*/
if (in)
{
temp = new ListNode(in);
node->next = temp;
}
return result;
}
};