LeetCode 2 兩數相加

2021-10-09 14:45:08 字數 2416 閱讀 3276

題目描述

我們使用變數來跟蹤進製,並從包含最低有效位的表頭開始模擬逐位相加的過程。

就像你在紙上計算兩個數字的和那樣,我們首先從最低有效位也就是列表 l1l1

l1和 l2l2

l2的表頭開始相加。由於每位數字都應當處於 0…9

0 \ldots 9

0…9 的範圍內,我們計算兩個數字的和時可能會出現 「溢位」。例如,5+7

=125 + 7 = 12

5+7=12

。在這種情況下,我們會將當前位的數值設定為 2

22,並將進製 car

ry=1

carry = 1

carry=

1 帶入下一次迭代。進製 car

rycarry

carr

y 必定是 0

00 或 1

11,這是因為兩個數字相加(考慮到進製)可能出現的最大和為 9+9

+1=19

9 + 9 + 1 = 19

9+9+1=

19。偽**如下:

將當前結點初始化為返回列表的啞結點。

將進製 car

rycarry

carr

y 初始化為 0。

將 p

pp 和 q

qq 分別初始化為列表 l1l1

l1和 l2l2

l2的頭部。

遍歷列表 l1l1

l1和 l2l2

l2直至到達它們的尾端。

將 x

xx 設為結點 p

pp 的值。如果 p

pp 已經到達 l1l1

l1的末尾,則將其值設定為 000。

將 y

yy 設為結點 q

qq 的值。如果 q

qq 已經到達 l2l2

l2的末尾,則將其值設定為 000。

設定 sum

=x+y

+car

rysum = x + y + carry

sum=x+

y+ca

rry。

更新進製的值,car

ry=s

um/10

carry = sum / 10

carry=

sum/

10。建立乙個數值為 (su

mmod

10)(sum \bmod 10)

(summo

d10)

的新結點,並將其設定為當前結點的下乙個結點,然後將當前結點前進到下乙個結點。

同時,將 p

pp 和 q

qq 前進到下乙個結點。

檢查 car

ry=1

carry = 1

carry=

1 是否成立,如果成立,則向返回列表追加乙個含有數字 1 的新結點。

返回啞結點的下乙個結點。

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

re = listnode(0)

r = re

carry =

0while

(l1 or l2)

: x = l1.val if l1 else

0 y = l2.val if l2 else

0 s = carry + x + y

r.next

= listnode(s %10)

r = r.

next

carry = s //

10if l1 is

notnone

: l1 = l1.

next

if l2 is

notnone

: l2 = l2.

next

if carry >0:

r.next

= listnode(1)

return re.

next

LeetCode2 兩數相加

嗯。今天兩個簡單題,我可能要墮落了 先貼第乙個 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807...

LeetCode 2 兩數相加

題目 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解題 這題就比較簡單了,兩數相加處理好...

LeetCode 2 兩數相加

題目描述 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。題目思路 先從最低有效位也就是列表 l1 和 l2 的表頭開始相加。由於每位數字都應當處於 0 9 的範圍內,我們計算...