LeetCodeソリューション| 2.追加二つの数字(シミュレーションC ++)

説明

LeetCode問題リンク

次の2つの非負の整数を表す2つの非空のリンクリストを与えています。数字は逆の順序で保存され、それらのノードの各々は、単一の数字を含みます。2つの数値を追加し、リンクリストとしてそれを返します。

次の2つの数字が数0自体を除き、任意の先行ゼロを含まない仮定することができます。

例:

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

アルゴリズム

キャリーを追跡し、ヘッダから始まるビット単位の加算処理をシミュレートするために使用する変数

  • 時間の複雑さ: ザ・ メートル A バツ n個 メートル O(MAX(N、M))
  • 宇宙の複雑さ: ザ・ メートル A バツ n個 メートル O(MAX(N、M))

C ++ソリューション

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        
        // Use variables to track carry
        // Simulate the bitwise addition process starting from the header
        auto p = l1, q = l2, dummy = new ListNode(-1);
        auto curr = dummy;
        int t = 0;
        
        while (p || q || t) {
            int sum = t;
            if (p) {sum += p->val; p = p->next;}
            if (q) {sum += q->val; q = q->next;}
            
            curr->next = new ListNode(sum % 10);
            curr = curr->next;
            t = sum / 10;
        }
        curr->next = NULL; // Actually constructor defined it
        
        return dummy->next;
    }
};

A-概要 - 会社概要 - どのようツー解決-リンクリスト-問題-C ++

308元記事公開 ウォンの賞賛149 ビュー150,000 +を

おすすめ

転載: blog.csdn.net/qq_43827595/article/details/104716864