LeetCode Task10.两数相加
程序员文章站
2024-03-15 23:17:54
...
题目
解答
代码
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
s=ListNode(0)
r=s
o=0
while l1 or l2:
if l1==None:
l1=ListNode(0)
if l2==None:
l2=ListNode(0)
a=l1.val+l2.val+o
l1,l2=l1.next,l2.next
if a>=10:
a=a-10
o=1
else:
o=0
s.next=ListNode(a)
s=s.next
if o:
s.next=ListNode(o)
return r.next
思路
用链表 s 记录结果,用 o 记录相加时是否进位,当 l1 、l2 位数不同时也给予了处理,当两者其中之一尾部还有元素的时候,赋另一个的尾部元素为0,按原方法相加,最后判断 o 是否还有进位,若有,则 s 继续进一位。
结果
上一篇: Problem K: 练习题2