兩個已經逆序的鍊錶相加

2021-10-21 05:00:17 字數 908 閱讀 5797

目如下:(和acm大數相加問題類似,要處理好進製問題)

給你兩個 非空 的鍊錶,表示兩個非負的整數。它們每位數字都是按照 逆序 的方式儲存的,並且每個節點只能儲存 一位 數字。

請你將兩個數相加,並以相同形式返回乙個表示和的鍊錶。

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

示例:

輸入:l1 = [2,4,3], l2 = [5,6,4]

輸出:[7,0,8]

解釋:342 + 465 = 807.

輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

輸出:[8,9,9,9,0,0,0,1]

資料有長有短

首先遍歷兩個鍊錶,分別記錄鍊錶長度(部分**如下)

while(p->next != null)elseelse;

*/struct listnode* addtwonumbers(struct listnode* l1, struct listnode* l2)

while(q->next != null)

if(len1 < len2)

}if(len1 > len2)

}int maxlen;

if(len1 > len2)else

int sum = 0;

int sign = 0;

p = l1;

q = l2;

while(maxlen--)else

p->val = sum % 10;

if(p->next != null && q->next != null)

}if(sign == 1)

return l1;

}從今天開始一天一道題,刷起來

LeetCode 兩個鍊錶相加得到乙個新的 鍊錶

這一題最後沒有做出來,答案來自 題解的精解答案 先看題目吧 思考 342 462 放在 鍊錶中就是 2,4,3 和 2,6,4 當我們對第乙個鍊錶元素進行操作的時候,就是對它的個位數操作,然後如果超過10就進製,這是符合我們平常的思考習慣的,你就不要再倒過來了。然後還要考慮,題目並沒有說明 兩個的位...

如何判斷兩個鍊錶相交

方法一 最笨的方法,遍歷鍊錶1,每遍歷乙個節點,判斷這個節點是否在鍊錶2中 for node1 in l1 for node2 in l2 if node1 node2 return true 時間複雜度比較高,o l1.length l2.length 方法二 萬能的hash,對於節點位址進行ha...

Leetcode NO 2 兩數相加 鍊錶相加

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