給你兩個 非空 鍊錶來代表兩個非負整數。數字最高位位於鍊錶開始位置。它們的每個節點只儲存一位數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。
高階:如果輸入鍊錶不能修改該如何處理?換句話說,你不能對列表中的節點進行翻轉。
示例:
輸入:(7-
>2-
>4-
>3)
+(5-
>6-
>4)
輸出:7
->8-
>0-
>
7
之前有數字從低位開始的兩數相加的鍊錶,所以使用鍊錶反轉後再相加的方法
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
//反轉鍊錶
private listnode reverselistnode
(listnode node)
return prenode;
}//鍊錶表示的數字是從低位開始時
private listnode help
(listnode l1,listnode l2)
if(num>0)
return ansnode.next;
}}
方法二不反轉鍊錶,使用棧或者陣列都可以,下面是使用棧的方式,主要考慮是棧的特性是先進後出
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
while
(l2!=null)
int num =0;
//儲存進製
listnode prenode = null;
while
(!s1.
isempty()
||!s2.
isempty()
||num>0)
return prenode;
}}
LeetCode 解題筆記 兩數相加
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。難度 中等 這道題目leetcode給的難度是...
LeetCode之兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7...
LeetCode之兩數相加
leetcode之兩數相加 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2...