leetcode中第2题的python解法,但其实是不能执行的,因为此段代码只能应用于list类型,但题目中给的是链表类型,其实咱也搞不懂啥是链表,看了遍解析似乎是java的概念,咱也不纠结,不会就算了,只是在这里记录一下如果是list类型,就可以跑通的代码
def twoAdd(list1,list2):
list1_num = 0
list2_num = 0
#由数组生成数字
for i in range(len(list1)):
list1_num_new = list1[i] * pow(10, i)
list1_num = list1_num + list1_num_new
for i in range(len(list2)):
list2_num_new = list2[i] * pow(10, i)
list2_num = list2_num + list2_num_new
list_num = list1_num + list2_num
# 将加和的数字转换成列表
list_ans = list(map(int, str(list_num)))
# 将结果倒序排列
list_ans_desc = list_ans[::-1]
return(list_ans_desc)
ans = twoAdd([9,9,9,9,9,9,9],[9,9,9,9])
print(ans)
过了很久,又想起来这事
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode(0)
p = dummy
carry = 0
while l1 or l2:
if l1 and l2:
value = l1.val + l2.val + carry
elif l1:
value = l1.val + carry
elif l2:
value = l2.val + carry
carry = 1 if value > 9 else 0
value = value - 10 if value > 9 else value
p.next = ListNode(value)
p = p.next
l1 = l1.next if l1 else l1
l2 = l2.next if l2 else l2
if carry == 1:
p.next = ListNode(1)
return dummy.next