002. Add Two Numbers
========================
- 位置:https://leetcode.com/problems/add-two-numbers/
- 描述:给定两个非空链表表示的数字,数字是按照逆序存储的,即低位的在前。返回这两个数字的和,仍然用同样的方式表示。
- 解法:基础的链表操作。
- 需要注意一点:自己 new 出来的东西,如果没有被返回,会造成内存泄漏。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int carry = 0;
ListNode* head = new ListNode(0);
ListNode* p = head;
while(l1 != NULL || l2 != NULL || carry) {
int sum = 0;
if (l1) {
sum += l1 -> val;
l1 = l1 -> next;
}
if (l2) {
sum += l2 -> val;
l2 = l2 -> next;
}
sum += carry;
ListNode* t = new ListNode(sum % 10);
p -> next = t;
p = p -> next;
carry = sum / 10;
}
p = head -> next;
delete head;
return p;
}
};