2. 两数相加 - 力扣(LeetCode)
解法:
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode * dummy = new ListNode(0);int carry = 0;ListNode * head = dummy;while (l1 != nullptr || l2 != nullptr || carry > 0) {int sum = 0;if (l1 != nullptr) {sum += l1->val;l1 = l1->next;}if (l2 != nullptr) {sum += l2->val;l2 = l2->next;}sum += carry;carry = sum / 10;sum = sum % 10;head->next = new ListNode(sum);head = head->next;}return dummy->next; }
};
总结:
时间计算复杂度O(N),空间计算复杂度O(N),因为要new N 个ListNode,使用dummy node记录head 计算结果的头指针