給定兩個非空鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。解決思路:你可以假設除了數字 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...