题目:
题目链接: https://leetcode-cn.com/problems/add-two-numbers-ii/
解题思路:
利用栈后进先出的特性,把两个链表放入栈中,然后对栈进行遍历,把数字相加,生成新的链表返回
代码实现:
# 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:
stack_l1 = []
stack_l2 = []
while l1:
stack_l1.append(l1.val)
l1 = l1.next
while l2:
stack_l2.append(l2.val)
l2 = l2.next
m, n = len(stack_l1), len(stack_l2)
if m < n:
m, n = n, m
stack_l1, stack_l2 = stack_l2, stack_l1
is_add = 0
head = ListNode(0)
while stack_l1:
num1 = num2 = 0
num1 = stack_l1[-1]
stack_l1.pop()
if stack_l2:
num2 = stack_l2[-1]
stack_l2.pop()
curr_num = num1 + num2 + is_add
if curr_num >= 10:
curr_num -= 10
is_add = 1
else:
is_add = 0
curr_node = ListNode(curr_num)
curr_node.next = head.next
head.next = curr_node
if is_add == 1:
curr_node = ListNode(1)
curr_node.next = head.next
head.next = curr_node
return head.next