測試用例先行考慮:
輸入:null + null
輸出:null
輸入:null + (1 -> 2)
輸出:1 -> 2
輸入:(7 -> 2) + (4 -> 2) (最高位進製)
輸出:1 -> 1 -> 4
輸入:(7 -> 2 -> 4 -> 3) +( 5 -> 6 -> 4) (一般用例)
輸出:7 -> 8 -> 0 -> 7
分析:模仿加法思路,從低位開始,而鍊錶為單向,所以可以用棧結構儲存這些數值,每次將棧頂元素相加,有進製則儲存,直到兩個棧為空及沒有進製為止。
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
while
(l2 != null)
listnode head =
newlistnode(-
1);int carry =0;
while
(!stack_a.
empty()
||!stack_b.
empty()
|| carry==1)
else
listnode node =
newlistnode
(sum)
; node.next = head.next;
head.next = node;
}return head.next;
}}
兩數相加 鍊錶
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
兩煉表數相加
給出兩個非空的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照逆序的方式儲存的,並且它們的每個節點只能儲存一位數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 ...
鍊錶兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...