[LeetCode]關於Add Two Numbers的一點想法


原題地址: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;
    }  
};  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章