自己写的堆溢出了。。。
接下来就 看 答 案
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *head = nullptr, *tail = nullptr;//新建链表,头尾指针
int carry = 0;//进位
while (l1 || l2)
{
int n1 = l1 ? l1->val: 0;//l1在某一位的值
int n2 = l2 ? l2->val: 0;//l2在相应位的值
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; //更新进位值
//更新到l1、l2的下一位(没有就不变,没有的话“->next”就不存在)
if (l1)
{
l1 = l1->next;
}
if (l2)
{
l2 = l2->next;
}
}
//循环结束,判断是否最高位有进位
if (carry > 0)
{
tail->next = new ListNode(carry);
}
return head;
}
};
记录原先的想法:没有开个新的链表,而是把答案添加到l1里去,就,好多要判断啊。。。看了下,也没考虑全。。。
!!!新建链表设俩指针



