002-Add Two Numbers
2017-12-27 本文已影响16人
篮子always
语言:python3
v1:以为是数组,没看清是ListNode,开始的想法是list转成int,再加,结果转字符串,再转为list,事实证明想法很天真。
class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
l1 = l1[::-1]
l2 = l2[::-1]
num1 = list()
num2 = list()
for i in l1:
num1.append(str(i))
for j in l2:
num2.append(str(j))
num1 = int(''.join(num1))
num2 = int(''.join(num2))
output = num1 + num2
output = str(output)
sum1 = list()
for i in range(len(output)):
sum1.append(int(output(i)))
return sum1[::-1]
v2:看了其他人的解题思路
class Solution:
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if l1 is None:
return l2
elif l2 is None:
return l1
else:
carry = 0
ret =ListNode(0)
ret_Last = ret
while(l1 or l2):
sum = 0
if(l1):
sum = l1.val
l1 = l1.next
if(l2):
sum += l2.val
l2 = l2.next
sum += carry
ret_Last.next = ListNode(sum%10)
ret_Last = ret_Last.next
carry = (sum >= 10)
if(carry):
ret_Last.next =ListNode(1)
ret_Last = ret.next
del ret
return ret_Last
ListNode(n)就是为后续节点添加值n, ListNode.next指向后一个节点