1. 程式人生 > >Java之兩個連結串列數字相加

Java之兩個連結串列數字相加

給出兩個 非空 的連結串列用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。

如果,我們將這兩個數相加起來,則會返回一個新的連結串列來表示它們的和。

您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807

解決方案:
1. 進位,以及進位數字的儲存
/**
 * 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 header = new ListNode(0); ListNode p = l1, q = l2, tmp = header; int curry = 0; while(p != null || q != null){ int x = p != null ? p.val : 0;
int y = q != null ? q.val : 0; int sum = x + y + curry; curry = sum /10; tmp.next = new ListNode(sum % 10); tmp = tmp.next; if(p != null) p = p.next; if(q != null) q = q.next; }
if(curry > 0){ tmp.next = new ListNode(curry); } return header.next; } }