強制ボタン(2つの数字を追加)

トピック:

2つの非負の整数を表すために、2つの空でないリンクリストが指定されています。その中で、それぞれの桁は逆の順序で格納され、各ノードは1桁しか格納できません。
これらの2つの数値を合計すると、それらの合計を表す新しいリンクリストが返されます。
番号0を除いて、これらの番号はいずれも0で始まらないと想定できます。

例:

入力:(2-> 4-> 3)+(5-> 6-> 4)
出力:7-> 0-> 8
理由:342 + 465 = 807

コード:

class Solution2 {
    
    

    public static class ListNode {
    
    
        int val;
        ListNode next;
        ListNode(int x) {
    
     val = x; }
    }

    public static ListNode addNUmbers(ListNode l1,ListNode l2){
    
    

        ListNode dummyHead = new ListNode(0);
        ListNode p =l1; ListNode q = l2;ListNode curr = dummyHead;
        int carry = 0;

        while(p!= null || q != null || carry != 0){
    
    
            int x = (p != null) ? p.val : 0;
            int y = (q != null) ? q.val : 0;
            int sum = carry + x + y;
            carry = sum / 10;
            curr.next = new ListNode(sum % 10);
            curr = curr.next;
            if (p != null) p = p.next;
            if (q != null) q = q.next;
        }
        return dummyHead.next;
    }
}

予防:

1単一リンクリストは最初からのみ検索できます
。2追加時に逆数を直接追加することもできます。各桁を追加してから直接キャリーします。キャリーをキャリーに設定し、次の反復を入力します
。3を考慮する必要があります。nullポインタ例外の問題
4整数に変換されると、コンパイルされてオーバーフローします
。5最初に何も追加されないため、キャリーは0でなければなりません。

効果:

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_42898315/article/details/108578693