看到这道题,我的想法就是位相加,但是我对Python的链表基本操作完全不清楚,所以要先学习。
也想着可以转换成相对熟悉一点的字符串再操作,但是不知道怎么转换…
先了解了解链表~
看了好多优秀同学的题解,还是似懂非懂
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
l3= ListNode(0)
r = l3
carry = 0 #进位
while l1 or l2:
val1 = l1.val if l1 else 0
val2 = l2.val if l2 else 0
temp = val1 + val2 + carry
carry = temp // 10
r.next = ListNode(temp % 10)
l1 = l1.next if l1 else 0
l2 = l2.next if l2 else 0
r = r.next
if carry == 1:
r.next = ListNode(1)
return l3.next
开始一直不懂为什么是返回l3.next,直到看到一位大哥的题解注释,提到哑节点,才算是明白了
今天花的时间不多,这个题目理解完全不够深刻
最近身体老出问题天天跑医院,很烦躁。健康最重要啊,我这个病痛缠身的无力青年无奈感慨道
明天开始要停更几天了,呀呀可千万别一直停下去了~