leetcode 445 兩數相加II(鍊錶)

2021-09-25 10:29:47 字數 1412 閱讀 3350

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。

你可以假設除了數字 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...