心路历程:
这道题其实不难,但是依旧不影响我写bug出来。
第一想法是遍历链表获得长度后根据多少位来获取数值,写一半发现逆序下直接挨个累加就行。
注意的点:
1、注意python的幂运算是n**m不是n^m,和Latex数学搞混了。
2、for i in range(len(list))循环时又把list[i]写成i了。
3、可以使用虚拟头节点来链接链表,注意返回时返回虚拟节点下一个节点。
解法:链表遍历
python
# 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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
# 获取两个数
t1 = l1
t2 = l2
n1, n2 = l1.val, l2.val
len1, len2 = 0, 0
while t1.next:
t1 = t1.next
len1 += 1
n1 += t1.val * 10**(len1)
while t2.next:
t2 = t2.next
len2 += 1
n2 += t2.val * 10**(len2)
dummy_head = ListNode()
res = n1 + n2
res = str(res)
t = dummy_head
for i in range(len(res)-1, -1, -1):
num = int(res[i])
tmp = ListNode(num)
t.next = tmp
t = t.next
return dummy_head.next