2つの数値を追加LeetCode 445は、II(2つの数値を追加II)

445追加する二つの数字II
追加二つの数字IIで445

タイトル説明が
与えられた二つの非空のリストを 2非負の整数を表すために。ビットの最大数は、リストの開始位置に配置されています。彼らは、各ノードは、単一の数字を格納します。2つの数字が一緒に新しいリストを返します。

あなたは数字0に加えて、これらの二つの数字がゼロで始まっていますことを仮定してもよいです。

高度:
あなたはどのように対処する入力リストを変更することができない場合は?言い換えれば、あなたは、リスト内のノードを反転することはできません。

LeetCode 445は、二つII番号を追加

例:

入力 (7 - > 2 - > 4 - > 3)+(5 - > 6 - > 4)
出力: 7 - > 8 - > 0 - > 7

Java実装

public class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
    }

    @Override
    public String toString() {
        return val + "->" + next;
    }
}
import java.util.Stack;

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        Stack<Integer> s1 = new Stack<Integer>();
        Stack<Integer> s2 = new Stack<Integer>();

        while (l1 != null) {
            s1.push(l1.val);
            l1 = l1.next;
        }
        while (l2 != null) {
            s2.push(l2.val);
            l2 = l2.next;
        }

        int sum = 0;
        ListNode list = new ListNode(0);
        while (!s1.empty() || !s2.empty()) {
            if (!s1.empty()) sum += s1.pop();
            if (!s2.empty()) sum += s2.pop();
            list.val = sum % 10;
            ListNode head = new ListNode(sum / 10);
            head.next = list;
            list = head;
            sum /= 10;
        }
        return list.val == 0 ? list.next : list;
    }
}

テストコード

import java.util.Stack;

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        Stack<Integer> s1 = new Stack<Integer>();
        Stack<Integer> s2 = new Stack<Integer>();

        while (l1 != null) {
            s1.push(l1.val);
            l1 = l1.next;
        }
        while (l2 != null) {
            s2.push(l2.val);
            l2 = l2.next;
        }

        int sum = 0;
        ListNode list = new ListNode(0);
        while (!s1.empty() || !s2.empty()) {
            if (!s1.empty()) sum += s1.pop();
            if (!s2.empty()) sum += s2.pop();
            list.val = sum % 10;
            ListNode head = new ListNode(sum / 10);
            head.next = list;
            list = head;
            sum /= 10;
            System.out.println(list);
        }
        return list.val == 0 ? list.next : list;
    }

    public static void main(String[] args) {
        ListNode t1 = new ListNode(7);
        ListNode t2 = new ListNode(2);
        ListNode t3 = new ListNode(4);
        ListNode t4 = new ListNode(3);
        t1.next = t2;
        t2.next = t3;
        t3.next = t4;

        ListNode p1 = new ListNode(5);
        ListNode p2 = new ListNode(6);
        ListNode p3 = new ListNode(4);
        p1.next = p2;
        p2.next = p3;

        System.out.println(new Solution().addTwoNumbers(t1, p1));
    }
}

テスト結果

0-> 7>ヌル
1-> 0-> 7>ヌル
0-> 8> 0-> 7>ヌル
0-> 7-> 8> 0-> 7>ヌル
7-> 8 - > 0-> 7>はnull

類似のトピック

参考資料

おすすめ

転載: www.cnblogs.com/hglibin/p/10963035.html