Add Two Numbers[LeetCode/Python3/Medium]
題目
給你兩個非空的鏈表,分別表示兩個非負整數。數字以相反的順序存儲,每個節點包含一個數字。將兩個數字相加並以鏈表形式返回其和。
你可以假設除了數字0本身,這兩個數字都不會以0開頭。
例子1:
輸入: l1 = [2,4,3], l2 = [5,6,4]
輸出: [7,0,8]
解釋: 342 + 465 = 807.
例子2:
輸入: l1 = [0], l2 = [0]
輸出: [0]
例子3:
輸入: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
輸出: [8,9,9,9,0,0,0,1]
限制:
- 鏈表中節點數目在範圍 [1, 100] 中。
0 <= Node.val <= 9
- 題目保證鏈表表示的數字不含前導零。
我的答案
# 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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
Output_Node=ListNode()
Output_currentNode=Output_Node
value=0
while l1 and l2 :
value += l1.val+l2.val
Output_currentNode.val=value%10
value=value//10
l1=l1.next
l2=l2.next
if l1 and l2:
Output_currentNode.next=ListNode()
Output_currentNode=Output_currentNode.next
if l1 :
Output_currentNode.next=ListNode()
Output_currentNode=Output_currentNode.next
while l1:
value+=l1.val
Output_currentNode.val=value%10
value=value//10
l1=l1.next
if l1:
Output_currentNode.next=ListNode()
Output_currentNode=Output_currentNode.next
elif l2 :
Output_currentNode.next=ListNode()
Output_currentNode=Output_currentNode.next
while l2:
value+=l2.val
Output_currentNode.val=value%10
value=value//10
l2=l2.next
if l2:
Output_currentNode.next=ListNode()
Output_currentNode=Output_currentNode.next
if value >0:
Output_currentNode.next=ListNode()
Output_currentNode=Output_currentNode.next
Output_currentNode.val=value
return Output_Node
留言
張貼留言