LeetCode2.兩數(shù)相加

給出兩個 非空 的鏈表用來表示兩個非負的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲的,并且它們的每個節(jié)點只能存儲 一位 數(shù)字。

如果,我們將這兩個數(shù)相加起來,則會返回一個新的鏈表來表示它們的和。

您可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807

思路:我的方法額外開辟了內(nèi)存空間,定義了一個數(shù)組,將兩個鏈表中的數(shù)先相加然后存放到數(shù)組中,然后從頭遍歷一邊數(shù)組,把需要進位的位置進行進位計算,然后最后在轉(zhuǎn)到一個鏈表中去
注意:1:一開始存入數(shù)組時注意哪個鏈表長,哪個鏈表短
2:最后數(shù)組轉(zhuǎn)鏈表的時候,很可能在最后會有進位,超出了數(shù)組的下標(biāo)范圍,要注意考慮

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        vector<int> v;
        while(l1 && l2){
            v.push_back(l1->val + l2->val);
            l1 = l1 -> next;
            l2 = l2 -> next;
        }
        while(l1){
            v.push_back(l1 -> val);
            l1 = l1 -> next;
        }
        while(l2){
            v.push_back(l2 -> val);
            l2 = l2 -> next;
        }
        for(int i = 0 ; i < v.size()-1 ; i ++){
            if(v[i] != 0){
                v[i+1] += v[i]/10;
                v[i] %= 10;
            }
        }
        if(v[v.size()-1] >= 10){
            v.push_back(v[v.size()-1]/10);
            v[v.size() - 2] %= 10;
        }
        ListNode* head = new ListNode(0);
        ListNode* p = head;
        p -> val = v[0];
        for(int i = 1 ; i < v.size() ; i++){
            ListNode* node = new ListNode(v[i]);
            p -> next = node;
            p = p -> next;
        }
        return head;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 兩數(shù)相加 給定兩個非空鏈表來表示兩個非負整數(shù)。位數(shù)按照逆序方式存儲,它們的每個節(jié)點只存儲單個數(shù)字。將兩數(shù)相加返回一...
    丹青水閱讀 281評論 0 0
  • 引言:用Js攻略leetcode中的算法,將會介紹自己的思路和注意點,一邊學(xué)習(xí)一邊愉快刷題呀。 問題1: 給定兩個...
    mooory閱讀 1,622評論 0 0
  • 搞懂單鏈表常見面試題 Hello 繼上次的 搞懂基本排序算法,這個一星期,我總結(jié)了,我所學(xué)習(xí)和思考的單鏈表基礎(chǔ)知識...
    醒著的碼者閱讀 4,608評論 1 45
  • 題目:給出兩個 非空 的鏈表用來表示兩個非負的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲的,并且它們的每個...
    anloney閱讀 1,149評論 1 0
  • 1. 使用互聯(lián)網(wǎng)會對我們的大腦工作方式帶來什么樣的實際影響? 當(dāng)我們上網(wǎng)的時候,就進入了一個鼓勵粗略閱讀,三心二意...
    王霞般若閱讀 324評論 0 3