视频讲解
2. 两数相加 2. Add Two Numbers
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode dummy(0); ListNode* tail = &dummy; int sum = 0; while (l1 != nullptr || l2 != nullptr || sum > 0) { sum += l1->val + l2->val; l1 = l1 != nullptr ? l1->next : nullptr; l2 = l2 != nullptr ? l2->next : nullptr; tail->next = new ListNode(sum % 10); sum = sum / 10; tail = tail->next; } return dummy.next; } };
来源:LeetCode https://leetcode-cn.com/problems/add-two-numbers/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode dummy(0); //虚拟结点
ListNode* tail = &dummy; //tail指针指向虚拟结点
int sum = 0;
while (l1 != nullptr || l2 !=nullptr || sum > 0) //必须都不满足才能停止循环
{
sum += (l1 == nullptr ? 0 : l1->val) + (l2 == nullptr ? 0 : l2->val);
l1 = l1 != nullptr ? l1->next : nullptr;
l2 = l2 != nullptr ? l2->next : nullptr;
//tail目前指向的虚拟节点
tail->next = new ListNode(sum % 10); //取个位
sum = sum / 10; //取十位
tail = tail->next;
}
return dummy.next;
}
};
第18行:
sum += l1->val + l2->val;
改为:
sum += (l1 == nullptr ? 0 : l1->val) + (l2 == nullptr ? 0 : l2->val);