445 兩數相加 II

2021-10-05 00:17:03 字數 940 閱讀 3581

演算法

由於鍊錶資料相加是逆序的,可以通過棧來儲存鍊錶資料,棧是先進後出,順序就變成了從末位相加,其實本題難度不大,就是不太容易想到使用棧來存資料計算。

**

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

temp = l2;

while

(temp != null)

int flag =0;

while

(!s1.

isempty()

||!s2.

isempty()

|| flag >0)

return res;

// 參考版本

// stacks1 = new stack<>();

// stacks2 = new stack<>();

// while(l1 != null)

// while(l2 != null)

// listnode res = null;

// int c = 0;

// while(!s1.isempty() || !s2.isempty() || c > 0)

// return res;

}}

複雜度

時間複雜度:o(max(m, n)),其中 m 與 n 分別為兩個鍊錶的長度。我們需要遍歷每個鍊錶。

空間複雜度:o(m + n),其中 m 與 n 分別為兩個鍊錶的長度。這是我們把鍊錶內容放入棧中所用的空間。

keypoint

引入棧

445 兩數相加 II

這種題的用例是一定會搞一些很大的數的。long都會溢位,所以我們就不用嘗試轉數字做加法轉鍊錶的方法了。另外直接倒置兩個鍊錶再做加法的做法會改變原鍊錶,題幹也說了禁止改動原鍊錶。1.求兩個鍊錶長度,如果一長一短,把短的前面加若干個0節點,使得兩個鍊錶長度相同。之後對於就遞迴連線鍊錶。dfs函式引數為前...

445 兩數相加 II

445.兩數相加 ii 2.兩數相加 的擴充套件 definition for singly linked list.public class listnode class solution if c 0 return reverselist dummy.next 易錯點 優化 插入新煉表時可以採用...

445 兩數相加 II

題目描述 給你兩個 非空 鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存一位數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。高階 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。示例 輸入 7 2 4 3...