Add Two Numbers

    Example

    Given 7->1->6 + 5->9->2. That is, 617 + 295.

    Given 3->1->5 and , return 8->0->8.

    首先由十进制加法可知应该注意进位的处理,但是这道题仅注意到这点就够了吗?还不够!因为两个链表长度有可能不等长!因此这道题的亮点在于边界和异常条件的处理,感谢 @wen 引入的 dummy 节点,处理起来更为优雅!

    Python

    Java

    1. 迭代能正常进行的条件为(NULL != l1) || (NULL != l2) || (0 != carry), 缺一不可。
    2. 对于空指针节点的处理可以用相对优雅的方式处理 -
    3. 生成新节点时需要先判断迭代终止条件 - (NULL == l1) && (NULL == l2) && (0 == carry), 避免多生成一位数0。 使用 dummy 节点可避免这一情况。

    复杂度分析