給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。
你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
高階:
如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。
示例:
輸入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出: 7 -> 8 -> 0 -> 7
轉換成數字後相加-無法解決大數問題
忘記考慮溢位的問題了,放棄直接求和,改用大數問題的做法
class
solution
while
(l2)
unsigned
long
long sum = num1 + num2;
listnode *head =
newlistnode(-
1);while
(sum >0)
return head-
>next;}}
;
1 棧/*
* 用兩個棧分別儲存兩個鍊錶的翻轉
* 彈棧並進行求和,將每一位的求和結果插入煉表頭
* 時間複雜度o(n)空間複雜度o(n)
*/class
solution
while
(l2)
listnode *head =
newlistnode(-
1);int carry =0;
// 進製
while(!
(st1.
empty()
&& st2.
empty()
))if(
!st2.
empty()
)int sum =
(num1 + num2 + carry)%10
; carry = num1 + num2 + carry >=10;
// 將求和後的位加入頭部
listnode *pnode =
newlistnode
(sum)
; pnode-
>next = head-
>next;
head-
>next = pnode;
}// 如果還有進製
leetcode 445 兩數相加 II
給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。輸入 7 2 4 3 5 6 4 輸出 7 8 0 7 分別遍歷兩個鍊錶,將鍊錶代表的數存於a,b 根據a,b的和,用...
Leetcode445 兩數相加 II
給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 ...
LeetCode 445 兩數相加II(Java)
給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 鍊錶不能修改該,換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3 5 6 4 輸出 7 8 0...