# 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:
len1 = len(l1)
len2 = len(l2)
mlen = max(len1, len2)
res = []
if operator.eq(l1, [0]):
return l2
if operator.eq(l2, [0]):
return l1
t = l1[0] + l2[0]
num = t % 10
acc = math.floor(t / 10)
res.insert(0, num)
for i in range(1, mlen+1):
if i >= len1:
num1 = 0
else:
num1 = l1[i]
if i >= len2:
num2 = 0
else:
num2 = l2[i]
if i == mlen:
if acc == 0:
return res
else:
res.insert(i,1)
return res
else:
t = num1 + num2 + acc
num = t % 10
acc = math.floor(t / 10)
res.insert(i, num)
执行代码后出现如下错误:
看了下发现这个listNode是题目中定义的数据结构,需要用其中所给的结构进行解题,好家伙直接百搭。
还是按照之前的思路,不过用的是题目中的数据结构,而且也不得到长度了,根据指针是否为空acc是否为0进行操作:如果当前两个指针都为空,说明两个链表都遍历过了,所以只需要看acc是否为1,如果为1说明有进位,需要再多用一个结点,为0直接结束。
# 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:
pnode1 = l1
pnode2 = l2
acc = 0
num1 = pnode1.val
num2 = pnode2.val
t = num1 + num2 + acc
num = t % 10
acc = math.floor(t / 10)
headNode = ListNode(num, None)
newNode = headNode
lastNode = newNode
print(headNode)
pnode1 = l1.next
pnode2 = l2.next
while pnode1 is not None or pnode2 is not None or acc != 0:
if pnode1 is None and pnode2 is None:
newNode = ListNode(1, None)
lastNode.next = newNode
return headNode
# 得到l1 l2对应的val值num1 num2,由于可能会有None的情况出现,对于None,num的值为0就可以
if pnode1 is None and pnode2 is not None:
num1 = 0
num2 = pnode2.val
if pnode1 is not None and pnode2 is None:
num1 = pnode1.val
num2 = 0
if pnode1 is not None and pnode2 is not None:
num1 = pnode1.val
num2 = pnode2.val
t = num1 + num2 + acc
num = t % 10
acc = math.floor(t / 10)
newNode = ListNode(num, None)
lastNode.next = newNode
lastNode = newNode
if pnode1 is None:
pnode1 = None
else:
pnode1 = pnode1.next
if pnode2 is None:
pnode2 = None
else:
pnode2 = pnode2.next
return headNode
在写出这段通过代码前我出了几个小错误:
1 判断条件复制粘贴结果出了错(真的得自己一个个敲啊,偷懒是有代价的T_T)
- THE END -
最后修改:2022年8月16日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://wangyuanzhuo.top/2%e4%b8%a4%e6%95%b0%e7%9b%b8%e5%8a%a0/