두개의 리스트가 주어질 때, 하나의 노드가 한 자리수의 숫자를 의미한다.
더 리스트의 수를 더하라.
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;
}
결과
'Leetcode > NeetCode' 카테고리의 다른 글
[LinkedList][Medium] 287. Find the Duplicate Number (0) | 2024.07.16 |
---|---|
[LinkedList][Medium] 141. Linked List Cycle (0) | 2024.07.16 |
[LinkedList][Medium] 138. Copy List with Random Pointer (0) | 2024.07.16 |
[LinkedList][Medium] 19. Remove Nth Node From End of List (0) | 2024.07.15 |
[LinkedList][Medium] 143. Reorder List (0) | 2024.07.15 |