2 兩數相加

2021-10-22 23:50:20 字數 1084 閱讀 4057

題目描述

解題思路

題目說逆序方式儲存,其實這種逆序更方便了啊,本來正常的加法思維就是從低位開始。我自己的寫的有點複雜,沒有想到可以把鍊錶考慮成長度一樣,如果鍊錶為空就補0。

1、自己寫的

思路也很簡單,先把前面幾位重合的部分加起來,用乙個變數來記錄進製。因為另外乙個鍊錶後面可能出現99999這樣的極端情況,所以得再用乙個迴圈來判斷終止條件。

public listnode addtwonumbers

(listnode l1, listnode l2)

p.next =

(l1 == null)

?l2:l1;

while

(plus !=0)

else

p = p.next;

}return re.next;

}

2、鍊錶補齊長度

public listnode addtwonumbers

(listnode l1, listnode l2)

if(plus !=

0)

p.next =

newlistnode

(plus)

;return re.next;

}

提交結果:

雖然兩種方法提交結果看起來差不多,但是後面的方法很明晰簡潔和清晰很多!

複雜度分析

時間複雜度:o(max(m,n)),假設 m 和 n 分別表示 l1 和 l2 的長度,上面的演算法最多重複 max(m,n) 次。

空間複雜度:o(max(m,n)), 新列表的長度最多為 max(m,n)+1。

2 兩數相加

平均星級 4.45 239次評分 2018年2月2日 28.6k次 預覽 給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...

2 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807 definition for singly l...

2 兩數相加

給定兩個非空鍊錶來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807演算法 我們首先從最低有效位也就是列表 l1和...