次の2つの非負の整数を表す2つの非空のリンクのリストを与えています。数字は逆の順序で保存され、それらのノードの各々は、単一の数字を含みます。2つの数値を追加し、リンクリストとしてそれを返します。
次の2つの数字が数0自体を除き、任意の先行ゼロを含まない仮定することができます。
例:
入力:(2 - > 4 - > 3)+(5 - > 6 - > 4)
出力:7 - > 0 - > 8
説明:342 + 465 = 807。
ソリューション
明らかにトピックを追加するためのリストをみましょう、またアイデア大規模データ計算は、それが直接デジタル加算器により横断して、明らかに範囲外となります。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode(0);
ListNode init = result;
while (true) {
int sum = l1.val + l2.val + result.val;
if (sum > 9) {
result.val = sum - 10;
result.next = new ListNode(1);
} else {
result.val = sum;
result.next = new ListNode(0);
}
if (l1.next == null && l2.next == null) {
if(result.next.val == 0){
result.next = null;
}
break;
} else {
result = result.next;
}
if (l1.next == null) {
l1.val = 0;
} else {
l1 = l1.next;
}
if (l2.next == null) {
l2.val = 0;
} else {
l2 = l2.next;
}
}
return init;
}
}