Add Two Numbers
- leetcode: Add Two Numbers | LeetCode OJ
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
- 迭代能正常进行的条件为
(NULL != l1) || (NULL != l2) || (0 != carry)
, 缺一不可。 - 对于空指针节点的处理可以用相对优雅的方式处理 -
生成新节点时需要先判断迭代终止条件 -使用 dummy 节点可避免这一情况。(NULL == l1) && (NULL == l2) && (0 == carry)
, 避免多生成一位数0。
复杂度分析
- CC150 Chapter 9.2 题2.5,中文版 p123
- Add two numbers represented by linked lists | Set 1 - GeeksforGeeks