每日演算法-兩數相加-連結串列
阿新 • • 發佈:2021-10-04
給你兩個非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照逆序的方式儲存的,並且每個節點只能儲存一位數字。
請你將兩個數相加,並以相同形式返回一個表示和的連結串列。
你可以假設除了數字 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
題目資料保證列表表示的數字不含前導零
解題思路:
1.首先將入參l1和l2由ListNode轉化為List,然後進行逆序相加,獲取到我們要生成的連結串列的值
2.由於我們要輸出的值為和的逆序,所以還需要對和進行逆序後在生成連結串列
# 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: str3= '' str4 = '' re = ListNode(0) r = re while l1 != None: str3 = str3 + str(l1.val) l1 = l1.next while l2 != None: str4 = str4 + str(l2.val) l2 = l2.next num1 = int(str3[::-1]) + int(str4[::-1]) num2= list(str(num1)[::-1]) for i in num2: r.next = ListNode(int(i)) r = r.next return(re.next)
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/add-two-numbers