leetcode_2 2つの数値を追加します。

次の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;
    }
}

おすすめ

転載: blog.csdn.net/qq_28929579/article/details/93760346