1. 程式人生 > 其它 >leetcode-445. 兩數相加 II

leetcode-445. 兩數相加 II

技術標籤:leetcode

給你兩個 非空 連結串列來代表兩個非負整數。數字最高位位於連結串列開始位置。它們的每個節點只儲存一位數字。將這兩數相加會返回一個新的連結串列。

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

進階:

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

示例:

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

來源:力扣(LeetCode)
連結:leetcode-445. 兩數相加 II

思路:
1.將連結串列的資料放到vector陣列中(按照連結串列的順序)

2.將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; } };