Add Two Numbers II
https://leetcode.com/problems/add-two-numbers-ii/description/
Thoughts
Code
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
vector<ListNode*> s1, s2;
while (l1 != NULL) {
s1.push_back(l1);
l1 = l1->next;
}
while (l2 != NULL) {
s2.push_back(l2);
l2 = l2->next;
}
int carry = 0; ListNode *p = NULL;
while (!s1.empty() || !s2.empty() || carry != 0) {
int a = s1.empty() ? 0 : s1[s1.size() - 1]->val;
int b = s2.empty() ? 0 : s2[s2.size() - 1]->val;
if (!s1.empty()) s1.pop_back();
if (!s2.empty()) s2.pop_back();
const auto res = a + b + carry;
carry = res >= 10 ? 1 : 0;
auto node = new ListNode(res % 10);
node->next = p;
p = node;
}
return p;
}
};Analysis
Last updated