struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int sum = 0;
int up = 0;
ListNode* head = new ListNode(0);//使用头结点,方便后面。
ListNode* pre = head;
while (l1 || l2)
{
sum = 0;
if (l1)
{
sum = sum + l1->val;
l1 = l1->next;
}
if (l2)
{
sum = sum + l2->val;
l2 = l2->next;
}
sum += up;
if (sum >= 10)
{
up = sum / 10;
sum = sum % 10;
}
else{
up = 0;
}
ListNode* newnode = new ListNode(sum);//怎么连接下一个?
pre->next = newnode;
pre = pre->next;
}
if (up != 0)//当两条链都没有结点时,若上一次相加后进位了。
{
ListNode* newnode = new ListNode(up);
pre->next = newnode;
}
return head->next;
}
};
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。两数相加。
最新推荐文章于 2024-01-31 18:24:51 发布