難度:中等
題目描述:
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 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。使用啞結點目的在於鍊錶初始化時無可用節點值,而且鍊錶構造過程需要指標移動,進而會導致頭指標丟失,無法返回結果。
**:
1class
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...