https://leetcode-cn.com/explore/interview/card/bytedance/244/linked-list-and-tree/1022/
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
题目意思和思路都很简单,主要考虑几个个情况:
- 进位,每个数字要考虑前面1个的进位
- 最后加完后,如果有进位,要补充1个1
- 注意处理和记录新的链表的head,同时如果是刚开始的,没有next
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if not l1 :
return l2
if not l2:
return l1
jinwei = 0
result = None
head = result
while l1 or l2:
val = jinwei
if l1:
val += l1.val
l1 = l1.next
if l2:
val += l2.val
l2 = l2.next
jinwei = val/10
if not result:
result = ListNode(val%10)
head = result
else:
next_r = ListNode(val%10)
result.next = next_r
result = next_r
if jinwei:
next_r = ListNode(1)
result.next = next_r
return head
网友评论