https://leetcode.com/problems/add-two-numbers/
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
리스트의 숫자들을 연속된 수로 보고 그 합을 리스트로 출력하면 된다.
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* dummy = new ListNode(0);
ListNode* ans = dummy;
int sum = 0, carry = 0, num = 0;
int l1Val, l2Val;
while(l1 || l2 || carry == 1)
{
if(l1 != NULL)
{
l1Val = l1->val;
l1 = l1->next;
}
else l1Val = 0;
if(l2 != NULL)
{
l2Val = l2->val;
l2 = l2->next;
}
else l2Val = 0;
sum = l1Val + l2Val + carry;
carry = sum / 10;
num = sum % 10;
dummy->next = new ListNode(num);
dummy = dummy->next;
}
return ans->next;
}
};
Runtime: 28 ms, faster than 77.70% of C++ online submissions for Add Two Numbers.
Memory Usage: 71.2 MB, less than 45.61% of C++ online submissions for Add Two Numbers.
Runtime: 40 ms, faster than 35.46% of C++ online submissions for Add Two Numbers.
Memory Usage: 71.2 MB, less than 67.58% of C++ online submissions for Add Two Numbers.