LeetCode演算法第二道 鍊錶兩數相加

2021-10-20 02:13:44 字數 1253 閱讀 2850

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

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

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

示例1:

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

輸出:[7,0,8]

解釋:342 + 465 = 807.

示例 2:輸入:l1 = [0], l2 = [0]

輸出:[0]

示例 3:

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

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

每個鍊錶中的節點數在範圍 [1, 100] 內

0 <= node.val <= 9

題目資料保證列表表示的數字不含前導零

方法一:模擬

思路與演算法

由於輸入的兩個鍊錶都是逆序儲存數字的位數的,因此兩個鍊錶中同一位置的數字可以直接相加。

我們同時遍歷兩個鍊錶,逐位計算它們的和,並與當前位置的進製值相加。具體而言,如果當前兩個鍊錶處相應位置的數字為 n1,n2,進製值為 carry,則它們的和為 n1+n2+carry;其中,答案鍊錶處相應位置的數字為 (n1+n2+carry)%10,而新的進製值為 (n1+n2+carry)/10.

如果兩個鍊錶的長度不同,則可以認為長度短的鍊錶的後面有若干個 0 。

此外,如果鍊錶遍歷結束後,carry>0,還需要在答案鍊錶的後面附加乙個節點,節點的值為 carry。

class solution  else 

carry = sum / 10;

if (l1 != null)

if (l2 != null)

}if (carry > 0)

return head;}}

複雜度分析時間複雜度:o(\max(m,n)),其中 m,n 為兩個鍊錶的長度。我們要遍歷兩個鍊錶的全部位置,而處理每個位置只需要 o(1) 的時間。

空間複雜度:o(max(m,n))。答案鍊錶的長度最多為較長鍊錶的長度1。

鍊錶的基礎問題LeetCode第二題

注 本人菜雞乙個,以後就在leetcode刷刷題這裡就隨便寫點刷題體會吧 鍊錶以前還是寫過的,但是不是特別清楚其中的一些實際操作,這次寫問題 2.add two numbers,就出現了點小麻煩。1.leetcode報錯 member access within null pointer of ty...

leetcode鍊錶第二題 兩數相加

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

leetcode初級演算法 鍊錶

題目源自leetcode,方法都是自 cai 己 ji 寫的,可能比較符合菜雞們的思路 鍊錶是做到現在,感覺自己最拉垮的一節,資料結構真的都還給老師了 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點。傳入函式的唯一引數為 要被刪除的節點 示例 1 輸入 head 4,5,1,9 node...