02 兩數相加

2022-09-01 19:45:14 字數 1472 閱讀 1850

難度:中等

題目描述:

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

題思路:

偽**:

1.將當前節點初始化為返回列表的啞結點

2.用p和q分別初始化為列表l1和l2的頭部

3.將進製carry初始化為0

迴圈終止條件(l1,l2均到尾端)

將x設為結點p的值(val)。如果p到l1的尾端,則將其設定為0;

將y設為結點q的值(val)。如果q到l2的尾端,則將其設定為0;

將sum設為當前結點的值,公式:sum = x + y + carry;

將numerical設為去掉進製之後的值,公式:numerical = sum % 10;

建立數值為numercial的結點;

將curr設定為當前結點的下一結點;

將p,q設定為當前結點的下一結點;

更新進製carry的值,公式:carry = sum / 10;

4.檢查進製carry的值是否大於0,如果大於0,則向返回列表追加carry的值;

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

注意點:

對於鍊錶問題,返回結果為頭結點時,通常需要先初始化乙個啞結點dummynode,該指標的下乙個節點指向真正的頭結點head。使用啞結點目的在於鍊錶初始化時無可用節點值,而且鍊錶構造過程需要指標移動,進而會導致頭指標丟失,無法返回結果。

**:

1

class

solution

23//

判斷是否有進製

24if(carry > 0)

25 curr.next = new

listnode(carry);

26return

dummynode.next;27}

28 }

02兩數相加

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

leetcode02 兩數相加

隨機一題 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 思路 剛開始很蠢的我居然乙個乙個讀...

LeetCode 02 兩數相加

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 listno...