2つの非負整数を表すために、2つの空でない連結リストが与えられます。それぞれのビットは逆順に格納され、各ノードには1桁しか格納できません。
一方、2つの数値を足し合わせると、その和を表す新しい連鎖表が返されます。
どちらの数字も0から始まることはないと思ってください。
入力: + 出力: 7 -> 0 -> 8 原因: 342 + 465 = 708
| もし余分な丸めが発生したら、余分な丸めを保持するために新しいノードを作成する必要があります。ヘッド・ノードを作成し、ヘッド・ノードを記録し、セカンダリー・ノードcurを使用して現在のノードを記録する必要があります。
/**
* 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 cur = result;
int carry = 0;
while (l1 != null || l2 != null) {
int x = (l1 != null) ? l1.val : 0;
int y = (l2 != null) ? l2.val : 0;
int sum = carry + x + y;
carry = sum / 10;
// ListNode tempNode = new ListNode(sum % 10);
cur.next = new ListNode(sum % 10);
// cur.next = tempNode;
cur = cur.next;
// 注:これは l1.next != null
if (l1 != null) l1 = l1.next;
if (l2 != null) l2 = l2.next;
}
if (carry > 0) {
cur.next = new ListNode(carry);
}
return result.next;
}
}