1. 程式人生 > 其它 >leetcode-445兩數相加

leetcode-445兩數相加

題目:
在這裡插入圖片描述
在這裡插入圖片描述
一、主要操作
1、進棧出棧:考慮到要從鏈尾開始相加,還要考慮進位,所以採用進棧出棧的方法,先所有連結串列的數進棧,出棧的時候鏈尾的數相加。

stack1 = [] #定義一個棧
# 入棧函式
def push_stack(p,stack):
	while p:
		stack.append(p.val)
		p = p.next
# 呼叫入棧函式
push_stack(l1,stack1) # l1為需要入棧的連結串列

2、用頭插法進行逆序:因為鏈尾先相加,相加結果依然要放到鏈尾,故要用頭插法進行逆序

class Solution:
    def addTwoNumbers(self,
l1: ListNode, l2: ListNode) -> ListNode: s1, s2 = [], [] while l1: s1.append(l1.val) #進棧 l1 = l1.next while l2: s2.append(l2.val) #進棧 l2 = l2.next ans = None carry = 0 while s1 or s2 or carry: a =
0 if not s1 else s1.pop() #出棧 b = 0 if not s2 else s2.pop() #出棧 sum = a + b + carry carry = sum // 10 c = sum % 10 # 頭插法進行逆序 newnode = ListNode(c) newnode.next = ans ans = newnode return ans