2. 两数相加

题目: Leetcode 2.两数相加 (中等) (二刷)

解题思路:

这道题考察了链表的递归,以及进位如何处理。

通过仔细阅读题目,我们可以发现,进位是往后进的。所以递归的时候,我们在返回的时候需要判断是否有进位,
如果有的话,我们需要重新修正后面的结点。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l2:
return l1
if not l1:
return l2
if not l1 and not l2:
return None
l3_val = (l2.val+l1.val)%10
l3 = ListNode(l3_val)
l3.next = self.addTwoNumbers(l1.next,l2.next)
if l2.val+l1.val >= 10:
l3.next = self.addTwoNumbers(ListNode(1),l3.next)
return l3

注:一定要观察进位的方向,是朝前进,还是朝后进,本题是朝链表后移的方向进位。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!