2023年3月12日 星期日

2. Add Two Numbers

解題思路

很基本的大數加法,只是用 linked list 來做而已。

程式碼

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* dummy = new ListNode();
        ListNode *head = dummy;

        int add = 0;
        while(l1 && l2)
        {
            int sum = 0;
            if(l1)
                sum += l1->val;
            if(l2)
                sum += l2->val;

            sum += add;
            head->next = new ListNode(sum % 10);
            add = sum / 10;
            head = head->next;
            l1 = l1->next;
            l2 = l2->next;
        }
         while(l1)
        {
            head->next = new ListNode((l1->val + add) % 10);
            add = (l1->val + add) / 10;
            head = head->next;
            l1 = l1->next;
        }
         while(l2)
        {
            head->next = new ListNode((l2->val + add) % 10);
            add = (l2->val + add) / 10;
            head = head->next;
            l2 = l2->next;
        }
        if(add != 0)
            head->next = new ListNode(add);
        return dummy->next;
    }
};

沒有留言:

張貼留言