leetcode-445. 兩數相加 II
阿新 • • 發佈:2021-01-30
技術標籤:leetcode
給你兩個 非空 連結串列來代表兩個非負整數。數字最高位位於連結串列開始位置。它們的每個節點只儲存一位數字。將這兩數相加會返回一個新的連結串列。
你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
進階:
如果輸入連結串列不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。
示例:
輸入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 8 -> 0 -> 7
來源:力扣(LeetCode)
連結:leetcode-445. 兩數相加 II
思路:
1.將連結串列的資料放到vector陣列中(按照連結串列的順序)
3.並將相加得到的數,放到新的連結串列中去
程式碼:
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
vector<int>s1;
vector<int>s2;
while(l1!=nullptr)
{
s1.push_back(l1->val);
l1=l1->next;
}
while(l2!=nullptr)
{
s2.push_back(l2->val);
l2=l2->next;
}
int carry=0;
ListNode* ret=nullptr;
while(s1.size()>0||s2.size()>0||carry>0)
{
int sum=carry;
if(s1.size()>0)
{
int item=s1.back();
s1.pop_back();
sum=sum+item;
}
if(s2.size()>0)
{
int item=s2.back();
s2.pop_back();
sum=sum+item;
}
ListNode* temp=new ListNode(sum%10);
carry=sum/10;
temp->next=ret;
ret=temp;
}
return ret;
}
};