blog

連鎖表形式での2つの数値の加算

2つの非負整数を表す2つの空でない連結リストが与えられます。ビットは逆順にソートされ、各ノードには1つの数値のみが格納されています。 先頭ノードを操作するには、ダミー・ノード dummy を作成し、 ...

Aug 10, 2020 · 1 min. read
シェア

つの負でない整数を表す2つの空でない連結リストが与えられます。桁は逆順にソートされ、各ノードには1つの数値のみが格納されます。

要件

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

感想です:

ヘッド・ノードを操作するには、ダミー・ノード dummy を作成し、dummy->next を使用して真のヘッド・ノードを表現することを検討します。変数を使用して丸めを追跡し、有効な最下位ビットを含むテーブルのヘッダから始まるビットごとの加算をシミュレートします。

リスト l1 と l2 のヘッダである有効な最下位ビットを加算することから始めます。丸めを考慮

感想

class Solution {
 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
 ListNode dummyHead = new ListNode(0);
 ListNode p = l1, q = l2, curr = dummyHead;
 int carry = 0;
 while (p != null || q != null) {
 int x = (p != null) ? p.val : 0;
 int y = (q != null) ? q.val : 0;
 int sum = x + y + carry;
 
 carry = sum / 10;
 curr.next = new ListNode(sum % 10);
 curr = curr.next;
 if (p != null) p = p.next;
 if (q != null) q = q.next;
 }
 if (carry > 0) {
 curr.next = new ListNode(carry);
 }
 return dummyHead.next;
 }
}
Read next

ClangでOCオブジェクトの性質を見る

1.Clangコンパイル macOSプロジェクトを作成し、中のmain.mファイルをコンパイルします。 コンパイルコマンド: clang -rewrite-objc main.m -o main.cpp, このコマンドでmain.mをcppファイルにコンパイルできます。 再びグローバル検索 typedef struct ob...

Aug 10, 2020 · 4 min read