rw note

LeetCode 02

开始的思路 单链表反转,以此遍历,进位,得到结果再反转。 写完发现。其实做了2次反转,可以直接计算,然后进位。

写完提交,re,原来还是用c的方法初始化结构体,替换之 WA,【5 5】输出 错误,最后一个进位如果溢出需要额外添加一个节点~~,修改再提交AC。

code:

class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {

        ListNode *node = new ListNode(0);
        node->val = 0;
        node->next = NULL;
        ListNode *current = node;

        int bit = 0;
        while (l1 || l2) {
            int val = 0;
            if(l1){
                val += l1->val;
            }
            if (l2) {
                val += l2->val;
            }
            val+=bit;

            bit = val/10;
            val %= 10;

            ListNode *node = new ListNode(val);
            current->next = node;
            current = node;
            if (l1) {
                l1 = l1->next;
            }
            if (l2) {
                l2 = l2->next;
            }

        }

        if (bit) {
            ListNode *node = new ListNode(1);
            current->next = node;
            current = node;
        }
        return node->next;
    }
};