leetcode 445 兩數相加 II

2021-09-28 22:44:37 字數 831 閱讀 2328

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。

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

高階: 如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。

解決思路:

1、翻轉兩個鍊錶,從低位開始逐位相加,然後將結果翻轉回去。需要多次遍歷鍊錶。

2、採用額外的儲存結構,用棧的特性將鍊錶節點儲存起來,從最後一位開始逐位相加,直接一次遍歷獲得結果。

3、採用遞迴的方法,遞迴方法總是從最後開始計算,然後向前返回,因此可以用這種方式來逆序計算。但是前提需要使兩個鍊錶長度相等,需要在短鍊錶前補全長度。

下面給出第二種思路的**

public listnode addtwonumbers

(listnode l1, listnode l2)

while

(l2!=null)

listnode p=null;

listnode node=null;

while

(!list1.

isempty()

&&!list2.

isempty()

) linkedlist

q=null;

if(list1.

isempty()

)else

while

(!q.

isempty()

)if(var!=0)

return p;

}

leetcode 445 兩數相加 II

給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。輸入 7 2 4 3 5 6 4 輸出 7 8 0 7 分別遍歷兩個鍊錶,將鍊錶代表的數存於a,b 根據a,b的和,用...

Leetcode445 兩數相加 II

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

LeetCode 445 兩數相加II(Java)

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