解法:模拟
思路:定义一个变量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;}
};