毎日のアルゴリズムの問題 - 2つの数値

説明

我々は2つの非空リストは二つの非負整数を表すために使用されて示されています。ここで、それぞれのビットは、方法の逆の順序で格納され、それらは各ノードが一つだけ桁を格納することができます。
我々はこれらの2つの数値を合計した場合、それは新しいリストを返しますし、それらを表現します。
あなたは数字0に加えて、これらの二つの数字が0で始まっていないと仮定することができます。

所与L1 = {VAR:2、次の :{ヴァル:4、次の:{ヴァル:3、次:ヌル}}}、L2 = {VAR:5、次の:{ヴァル:6、次の:{ヴァル:4 次:ヌル}}}
出力:{VAR:7、次の: {ヴァル:0、次の:{ヴァル:8、次:ヌル}}}
理由:342 + 465 = 807

答え

var addTwoNumbers = function(l1, l2, carry = 0) {
    let val = l1.val + l2.val + carry
    if(val >= 10){
        val = val % 10
        carry = 1
    } else {
        carry = 0
    }
    return {
        val: val,
        next: l1.next || l2.next || carry ? addTwoNumbers(
            l1.next || {val: 0, next: null},
            l2.next || {val: 0, next: null},
            carry
        ) : null
    }
}

分析

時間計算:(MAX(N、M))、空間的複雑度はO:O(ABS(N - M))

おすすめ

転載: www.cnblogs.com/zhoulixiangblog/p/12046599.html