題目:
我的第一種解法:
企圖: 寫乙個把鍊錶中的值轉換成 整型的方法,再寫乙個把整型轉換成鍊錶形式的方法,以此得到結果返回
#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 位,然後再求得本位的進製,將結果的節點 加入新鍊錶即可。何時應該結束迴圈呢?容易想到,當兩個鍊錶都為空時,應該結束迴圈,其實 這是錯誤的,還應該再判斷...