2両数加算(c++)

1166 ワード

時間の複雑さに問題があるので、リンクを修正します.
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode *head = (ListNode*)malloc(sizeof(ListNode));
        ListNode *p =head;
        int temp,flag=0;
        while(l1 || l2 || (flag == 1)){
            temp=0;
            //   
            if (l1 != nullptr) 
                temp+=l1->val;
            if (l2 != nullptr )
                temp+=l2->val;

            if (flag == 1){
                temp+=1;
                p->val=temp%10;
            }
            else
                p->val=temp%10;
            //          1
            if (temp >= 10)
                flag=1;
            else
                flag=0;
            //    
            ListNode *next = (ListNode*)malloc(sizeof(ListNode));
            p->next = next;
            p = p->next;
            l1 = l1 ? l1->next : nullptr;
            l2 = l2 ? l2->next : nullptr;
        }
        return head;
    }
};