1. 程式人生 > 其它 >每日演算法-兩數相加-連結串列

每日演算法-兩數相加-連結串列

給你兩個非空 的連結串列,表示兩個非負的整數。它們每位數字都是按照逆序的方式儲存的,並且每個節點只能儲存一位數字。

請你將兩個數相加,並以相同形式返回一個表示和的連結串列。

你可以假設除了數字 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