Leetcode 445 兩數相加 II

2022-08-02 18:21:08 字數 1407 閱讀 6296

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

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

高階:

如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。

示例:

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

輸出: 7 -> 8 -> 0 -> 7

2.1 思路

(1)將兩個鍊錶反轉,就變成了leetcode上的第二道題目「2.兩數相加」;

(2)然後就是一樣的思路:題中鍊錶順序正好是低位到高位,先低位相加,有進製保持,下一位計算加上進製,直到最高位相加,如果有進製,生成新的結點儲存。

2.2 **

class

solution

return

h; }

listnode* addtwonumbers(listnode* l1, listnode*l2)

//最後的進製

if (carry == 1

)

//還原鍊錶

hl3->next = solution::reverselist(hl3->next);

return hl3->next;

}};

3.1 思路

關鍵還是在於逆序結構適應於這種情況。不需要考慮空間複雜性的話,為了方便,使用三個棧

3.2 **

#include #include 

using

namespace

std;

struct

listnode

};class

solution

while (l2 !=null)

//用棧來相加

int a = 0

;

int b = 0

;

int temp = 0

;

int carry = 0

;

while (!s1.empty() || !s2.empty())

if (carry == 1

) s3.push(1);

//恢復順序

while (!s3.empty())

return hl3->next;

}};int

main()

return0;

}

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