題目如下:(和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 輸出 ...