leetcode 2
两个链表加和,模拟大数加法。
http://www.jianshu.com/p/5d8f13225adf
python 链表:
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
a, a.next, a.next.next = ListNode(2), ListNode(4), ListNode(3)
b, b.next, b.next.next = ListNode(5), ListNode(6), ListNode(4)
print a.val
print a.next.val
代码:
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
sum=ListNode(0)#sum是
ptr=sum
carry=0 #carry是进位,var是当前位
while l1 or l2:
val=carry #获得进位信息
if l1:
val+=l1.val
l1=l1.next
if l2:
val+=l2.val
l2=l2.next
carry=val/10, val=val%10
ptr.next=ListNode(val) #这一位的结果
ptr=ptr.next #下一位
#highest position
if carry==1:
ptr.next=ListNode(1)
return sum.next #为啥要sum.next, sum.next还是这一位的结果,ptr已经移动到是next.next了,ptr是一个提前一位的指针。