解法:模拟
思路:定义一个变量t,存储相加后的结果,个位赋给新节点,十位(表示有进位)留下,累加到下一次加法(相当于+上进位)。while里即便cur1和cur2都为空了,但上次的t还存在进位,就继续添加新节点,所以t也需要在while判断。
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
ListNode* cur1 = l1,*cur2 = l2;
ListNode* newhead = new ListNode(0);
ListNode* prev = newhead;
int l = 0,r = 0,t = 0;
while(cur1 || cur2 || t)
{
if(cur1)
{
t += cur1->val;
cur1 = cur1->next;
}
if(cur2)
{
t += cur2->val;
cur2 = cur2->next;
}
//t里已有定数
prev->next = new ListNode(t % 10);
prev = prev->next;
t /= 10;
}
return newhead->next;
}
};