每日一題 2 兩數相加

2021-10-20 03:42:25 字數 1971 閱讀 8545

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`

`題目資料保證列表表示的數字不含前導零

2、解法

題目比較簡單,由於鍊錶都已經是逆序排列了,只需要從頭到尾做加法即可。

注:別漏了最後乙個餘數判斷,可能會進1(見quotient判斷函式)

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

val1 = l1.val

val2 = l2.val

quotient =

0 remainder =

(val1 + val2 + quotient)%10

quotient =

(val1 + val2 + quotient)

//10

head = listnode(remainder)

root = head

p = head

while l1.

next

isnot

none

or l2.

next

isnot

none

: val1 = val2 =

0if l1.

next

isnot

none

: l1 = l1.

next

val1 = l1.val

if l2.

next

isnot

none

: l2 = l2.

next

val2 = l2.val

sum1 = val1 + val2 + quotient

remainder = sum1 %

10 quotient = sum1 //

10 newnode = listnode(remainder)

p.next

= newnode

p = p.

next

if quotient !=0:

p.next

= listnode(1)

return root

結果:

顯示詳情

執行用時:64 ms, 在所有 python3 提交中擊敗了90.25%的使用者

記憶體消耗:14.9 mb, 在所有 python3 提交中擊敗了21.61%的使用者

C LeetCode每日一題 2 兩數相加

題目 2.兩數相加 description 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭...

leetcode每日一題 2 兩數相加

題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 ...

每日一題3 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...