<p>很好地使用了<code>unittest</code>和<code>carry, arith = divmod(arith, 10)</code></p>
<hr/>
<p>不确定您的bug,但我们可以使用sentinel节点,从而更轻松地解决问题</p>
<p>这将通过:</p>
<pre><code>class Solution:
def addTwoNumbers(self, a, b):
carry = 0
sentinel = p = ListNode(0)
while a or b or carry:
if a:
carry, a = carry + a.val, a.next
if b:
carry, b = carry + b.val, b.next
carry, val = carry // 10, carry % 10
p.next = p = ListNode(val)
return sentinel.next
</code></pre>
<hr/>
<h2>参考资料</h2>
<ul>
<li>有关更多详细信息,请参见<a href="https://leetcode.com/problems/add-two-numbers/discuss/" rel="nofollow noreferrer">Discussion Board</a>。有许多公认的解决方案,其中包括各种<a href="https://support.leetcode.com/hc/en-us/articles/360011833974-What-are-the-environments-for-the-programming-languages-" rel="nofollow noreferrer">languages</a>和解释、有效算法以及渐近<a href="https://en.wikipedia.org/wiki/Time_complexity" rel="nofollow noreferrer">time</a>/<a href="https://en.wikipedia.org/wiki/Space_complexity" rel="nofollow noreferrer">space</a>复杂性分析<sup><a href="https://en.wikipedia.org/wiki/Big_O_notation" rel="nofollow noreferrer">1</a>、<a href="https://en.wikipedia.org/wiki/Analysis_of_algorithms" rel="nofollow noreferrer">2</a></sup></李>
</ul>