leetcodeブラシノート-2.両数加算(java実装)


タイトルの説明
2つ与える 空でないチェーンテーブルは、2つの非負の整数を表すために使用されます.それぞれの桁数は 逆順序 の方法で保存され、各ノードは保存できません. 一人 数値.
この2つの数を加算すると、新しいチェーンテーブルが返され、合計が表示されます.
数値0以外の2つの数は0ではないと仮定できます. はじめに.
例:
入力:(2->4->3)+(5->6->4)出力:7->0->8理由:342+465=807
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/add-two-numbers
問題を解く構想.
問題を見ると本質的に2つの数が加算されていることがわかりますが、記憶方式はチェーンテーブル構造なので、順番に対応するビットをそれぞれ加算し、10より大きい場合は、進位を保留することを覚えています.
解題コード
下のコード、実行時間:2 ms  メモリ消費量:43.6 MB.
/**
 * 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) {
        int i1, i2, bi=0, sum=0;
        ListNode rl = new ListNode(0);
        ListNode rnow = rl;
        boolean sig = true;
        while(true) {
            if(l1 != null) {
                i1 = l1.val;
            } else {
                i1 = 0;
            }
            if(l2 != null) {
                i2 = l2.val;
            } else {
                i2 = 0;
            }
            sum = bi + i1 + i2;
            if(sig) {
                sig = false;
                rnow.val = sum % 10;
            } else {
                rnow.next = new ListNode(sum % 10);
                rnow = rnow.next;
            }
            bi = sum / 10;
            sum = 0;
            if(l1 != null) {
                l1 = l1.next;
            }
            if(l2 != null) {
                l2 = l2.next;
            }
            if(l1 == null && l2 == null) {//             
                if(bi != 0) {//          ,       
                    rnow.next = new ListNode(bi);
                }
                break;
            }
        }
        return rl;
    }
}

コードウェアハウス
gitee:https://gitee.com/Tong_Cheng_Yu/leetcode/tree/master
github:https://github.com/t-c-y/leetcode