⬆︎
×

[LC] 0002 Add Two Numbers

Java

public class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}
/**
 * <a href="https://leetcode-cn.com/problems/add-two-numbers/">Add Two Numbers</a>
 */
class Solution {

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode l3 = new ListNode();
        ListNode p = l1;
        ListNode q = l2;
        ListNode r = l3;

        int carry = 0;
        while (p != null || q != null || carry > 0) {
            int sum = carry;
            if (p != null) {
                sum += p.val;
            }
            if (q != null) {
                sum += q.val;
            }
            carry = sum / 10;

            r.next = new ListNode(sum % 10);
            r = r.next;
            if (p != null) {
                p = p.next;
            }
            if (q != null) {
                q = q.next;
            }
        }

        return l3.next;
    }
}

C++

#ifndef LEETCODE_SOLUTIONS_LISTNODE_H
#define LEETCODE_SOLUTIONS_LISTNODE_H

struct ListNode {
    int val;
    ListNode *next;

    ListNode() : val(0), next(nullptr) {}

    ListNode(int x) : val(x), next(nullptr) {}

    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

#endif //LEETCODE_SOLUTIONS_LISTNODE_H
#include <iostream>
#include "ListNode.h"

using namespace std;

class Solution {
public:
    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
        ListNode *res = new ListNode;

        int carry = 0;
        ListNode *p1 = l1, *p2 = l2, *r = nullptr;
        while (p1 || p2) {
            if (p1) {
                carry += p1->val;
                p1 = p1->next;
            }
            if (p2) {
                carry += p2->val;
                p2 = p2->next;
            }
            ListNode *s = new ListNode;
            s->next = nullptr;
            s->val = carry % 10;
            carry /= 10;

            if (!r) {
                res = s;
            } else {
                r->next = s;
            }
            r = s;
        }

        if (carry) {
            ListNode *s = new ListNode;
            s->next = nullptr;
            s->val = carry;
            r->next = s;
        }

        return res;
    }
};

JavaScript

export class ListNode {
    val;
    next;

    constructor(val, next) {
        this.val = (val === undefined ? 0 : val)
        this.next = (next === undefined ? null : next)
    }
}
import {ListNode} from "./ListNode.js";

/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function (l1, l2) {
    let l3 = new ListNode();
    let p = l1, q = l2, r = l3;

    let carry = 0;
    while (p != null || q != null || carry > 0) {
        let sum = carry;
        if (p != null) {
            sum += p.val;
        }
        if (q != null) {
            sum += q.val;
        }
        carry = Math.floor(sum / 10);

        r.next = new ListNode(sum % 10);
        r = r.next;
        if (p != null) {
            p = p.next;
        }
        if (q != null) {
            q = q.next;
        }
    }

    return l3.next;
};

PHP

class ListNode {
    public $val = 0;
    public $next = null;

    function __construct($val = 0, $next = null) {
        $this->val = $val;
        $this->next = $next;
    }
}
include "ListNode.php";

class Solution {

    /**
     * @param ListNode $l1
     * @param ListNode $l2
     * @return ListNode
     */
    function addTwoNumbers(ListNode $l1, ListNode $l2): ListNode {
        $l3 = new ListNode();
        $p = $l1;
        $q = $l2;
        $r = $l3;

        $carry = 0;
        while ($p != null || $q != null || $carry > 0) {
            $sum = $carry;
            if ($p != null) {
                $sum += $p->val;
            }
            if ($q != null) {
                $sum += $q->val;
            }
            $carry = floor($sum / 10);

            $r->next = new ListNode($sum % 10);
            $r = $r->next;
            if ($p != null) {
                $p = $p->next;
            }
            if ($q != null) {
                $q = $q->next;
            }
        }

        return $l3->next;
    }
}

发表评论