Leetcode/NeetCode

[LinkedList][Medium] 2. Add Two Numbers.

자전거통학 2024. 7. 16. 00:28

Add Two Numbers - LeetCode

 

두개의 리스트가 주어질 때, 하나의 노드가 한 자리수의 숫자를 의미한다.

더 리스트의 수를 더하라.

 

carry에 주의해서 더하고 new list를 만든다.

 

코드 

더보기
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) 
{
    ListNode* newHead = nullptr;
    ListNode* node = nullptr;
    ListNode* node1 = l1;
    ListNode* node2 = l2;
    ListNode* prev = nullptr;
    int carry = 0;
    while (node1 != nullptr || node2 != nullptr || carry > 0)
    {
        int sum = 0;
        if (node1 != nullptr && node2 != nullptr)
            sum = node1->val + node2->val + carry;
        else if (node1 != nullptr)
            sum = node1->val + carry;
        else if (node2 != nullptr)
            sum = node2->val + carry;
        else sum = carry;

        carry = sum / 10;
        sum %= 10;

        node = new ListNode(sum, nullptr);

        if (prev != nullptr)
            prev->next = node;
        if (newHead == nullptr)
            newHead = node;

        prev = node;

        node1 = node1 == nullptr ? nullptr : node1->next;
        node2 = node2 == nullptr ? nullptr : node2->next;
    }
    return newHead;
}

 

 

 

결과