前言
一开始其实也没想出来,看了题解说可以将提前结束的那条链的值认为是0,才做出来的。
代码
/*
* @lc app=leetcode.cn id=2 lang=cpp
*
* [2] 两数相加
*/
// @lc code=start
/**
* Definition for singly-linked list.
* 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)
{
ListNode* ansHead = new ListNode;
ListNode* cur = ansHead;
int preCarray = 0;
int carray;
while(l1!=nullptr || l2!=nullptr)
{
int a, b;
if(l1 == nullptr)
{
a = 0;
}
else
{
a = l1->val;
}
if(l2 == nullptr)
{
b = 0;
}
else
{
b = l2->val;
}
cur->val = (a + b + preCarray) % 10;
carray = (a + b + preCarray) / 10;
std::cout<<carray<<std::endl;
preCarray = carray;
if(l1!=nullptr) l1 = l1->next;
if(l2!=nullptr) l2 = l2->next;
if(l1!=nullptr || l2!=nullptr)
{
ListNode* curNext = new ListNode;
cur->next = curNext;
cur = cur->next;
}
}
if(preCarray > 0)
{
ListNode* curNext = new ListNode;
cur->next = curNext;
cur = cur->next;
cur->val = preCarray;
}
return ansHead;
}
};
// @lc code=end
结果
Accepted
1568/1568 cases passed (28 ms)
Your runtime beats 51.71 % of cpp submissions
Your memory usage beats 69.34 % of cpp submissions (70 MB)