Linked list로 저장된 두 개의 숫자 배열 합을 구하는 문제입니다.
두 개의 숫자 배열이 길이가 다를 수 있기 때문에, 둘 중 하나라도 마지막 노드가 아닐 경우 다른 쪽 숫자 배열에 새로운 노드를 추가했습니다.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* answer = new ListNode;
ListNode* iter = answer;
int upper = 0;
while(true)
{
if (l1->val + l2->val >= 10)
{
iter->val = l1->val + l2->val - 10;
upper = 1;
}
else
{
iter->val = l1->val + l2->val;
upper = 0;
}
if(l1->next != nullptr || l2->next != nullptr)
{
if(l1->next == nullptr)
{
ListNode* newl1 = new ListNode;
l1->next = newl1;
}
l1 = l1->next;
if(l2->next == nullptr)
{
ListNode* newl2 = new ListNode;
l2->next = newl2;
}
l2 = l2->next;
l1->val += upper;
ListNode* newAns = new ListNode;
iter->next = newAns;
iter = iter->next;
}
else if(upper == 1) // l1,l2 next is nullptr
{
ListNode* newAns = new ListNode;
iter->next = newAns;
iter = iter->next;
iter->val = upper;
return answer;
}
else if(upper == 0) // l1,l2 next is nullptr
{
return answer;
}
}
}
};
'알고리즘 > LeetCode' 카테고리의 다른 글
[LeetCode] 6. Zigzag Conversion (Medium) (0) | 2022.04.28 |
---|---|
[LeetCode] 9. Palindrome Number (Easy) (0) | 2022.04.27 |
[LeetCode] 3. Longest Substring Without Repeating Characters (Medium) (0) | 2022.04.27 |
[LeetCode] 1. Two Sum (Easy) (0) | 2022.04.26 |
[LeetCode] 13. Roman to Integer (Easy) (0) | 2022.04.26 |