leetcode445 兩數相加 II

2021-10-04 19:24:32 字數 1089 閱讀 1452

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。

你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。

高階:如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。

示例:輸入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出: 7 -> 8 -> 0 -> 7

利用連個棧儲存鍊錶節點,並設定乙個pre指標用於倒置節點,head為當前位置計算出節點的值,head->pre,pre = head

# 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:

if not l1 or not l2:

return l1 or l2

stack1, stack2 = [l1], [l2]

while stack1[-1].next: # 1.入棧元素

while stack2[-1].next:

carry, prev = 0, none

while stack1 or stack2 or carry: # 最長遍歷

# 不夠補0

carry += (stack1.pop().val if stack1 else 0) + (stack2.pop().val if stack2 else 0)

head = listnode(carry % 10)

carry //= 10

head.next = prev # 倒置連線

prev = head # prev更新

return head

leetcode 445 兩數相加 II

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。輸入 7 2 4 3 5 6 4 輸出 7 8 0 7 分別遍歷兩個鍊錶,將鍊錶代表的數存於a,b 根據a,b的和,用...

Leetcode445 兩數相加 II

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 ...

LeetCode 445 兩數相加II(Java)

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 鍊錶不能修改該,換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 輸出 7 8 0...