leetcode 第二題 兩數求和

2021-09-12 20:07:17 字數 1194 閱讀 7391

題目:

我的第一種解法:

企圖: 寫乙個把鍊錶中的值轉換成 整型的方法,再寫乙個把整型轉換成鍊錶形式的方法,以此得到結果返回

#includeusing namespace std;

struct listnode

};class solution

long getnum(listnode* l)

return sum;

}listnode* getlist(int sum)

return head;}};

失敗了嘛,那就換一種方法繼續搞。

class solution 

if(l1 != nullptr)

}if(l2 != nullptr)

}if(l1 == nullptr && l2 == nullptr && jin ==1)

return head;}};

這個方法的思想是:

兩個指標同時指著遍歷,分別討論兩個鍊錶長度同樣長,l1鍊錶比l2長,l2鍊錶比l1長的情況。

同時,注意好進製項。

eg:迴圈中,對於v1  . v2 值 和進製項 jin, 本應該先求得 (v1 + v2 + jin) % 10  的答案 ,先存起來,然後在用

(v1 + v2 + jin) / 10 得到新的進製項的,

但是我怎麼做了呢 ?

v 1 = (v1 + v2 + jin) % 10

jin = (v1 + v2 + jin) / 10

此時由於v1已經被修正了, 所以我就sb了。。。。。。。。。。。不甘心~~~~~~~~

補乙個時間複雜度,空間複雜度都是o(n)的方法,  這歌看起來簡單一些

#includeusing namespace std;

struct listnode

};class solution

if(jin != 0)

return dummies->next;}};

生成新節點的方法還以一樣的,就不說了。看看結構就好。

結構:簡潔,思維清晰,學習榜樣!!!!!ok。不誇別人了。

Leetcode 第二題 兩數相加

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

LeetCode第二題 兩數相加

給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字0之外,這兩個數都不會以0開頭。輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 ...

Leetcode 第二題 兩數相加

按照平常的整數加法計算即可,則結果的第 i 位數字等於鍊錶a的第 i 位的值加上鍊表b的第 i 位的值 再加上第 i 1 位的進製,即是結果的第 i 位,然後再求得本位的進製,將結果的節點 加入新鍊錶即可。何時應該結束迴圈呢?容易想到,當兩個鍊錶都為空時,應該結束迴圈,其實 這是錯誤的,還應該再判斷...