leetcodeブラシノート-2.両数加算(java実装)
1946 ワード
タイトルの説明
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.
コードウェアハウス
gitee:https://gitee.com/Tong_Cheng_Yu/leetcode/tree/master
github:https://github.com/t-c-y/leetcode
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