本文最后更新于570 天前,其中的信息可能已经过时,如有错误请发送邮件到1986413837@qq.com
这个算是链表入门题 热一下身

有点像之前的高精度加法了 主要是C++真的很方便哈哈哈
不过 STL 基本忘光了 不会用那玩意了
思路挺简单的 从头结点开始 加起来/10为进位数 %10为新节点的值
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *head = NULL, *tail = NULL;
int carry = 0;
while (l1 || l2)
{
int n1 = l1 ? l1->val: 0;
//可能第一位是0
int n2 = l2 ? l2->val: 0;
int sum = n1 + n2 + carry;
if (!head) {
head = tail = new ListNode(sum % 10);
} else {
tail->next = new ListNode(sum % 10);
tail = tail->next;
}
carry = sum / 10;
if (l1) {
l1 = l1->next;
}
if (l2) {
l2 = l2->next;
}
}
if (carry > 0) {
tail->next = new ListNode(carry);
}
return head;
}
};