js 两数相加 链表

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
<!DOCTYPE html>
<html lang="zh">

    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>js 两数相加 链表</title>
    </head>

    <script type="text/javascript">
        /**
         * Definition for singly-linked list.
         * function ListNode(val) {
         *     this.val = val;
         *     this.next = null;
         * }
         */
        /**
         * @param {ListNode} l1
         * @param {ListNode} l2
         * @return {ListNode}
         */
        var addTwoNumbers = function(l1, l2) {
            //carry为进位,初始化为0   
            var c1 = l1,
                c2 = l2,
                c3, l3, carry = 0;

            while(c1 || c2 || carry) {
                var v1 = 0,
                    v2 = 0;

                if(c1) {
                    //根据前文给出的代码结构val、next
                    v1 = c1.val;
                    c1 = c1.next;
                }

                if(c2) {
                    v2 = c2.val;
                    c2 = c2.next;
                }

                var sum = v1 + v2 + carry;
                carry = Math.floor(sum / 10); //得到进位

                if(!c3) {
                    l3 = new ListNode(sum % 10);
                    c3 = l3;
                } else {
                    c3.next = new ListNode(sum % 10);
                    c3 = c3.next;
                }
            }
            return l3;

        };
    </script>
    </body>

</html>

 

上一篇:我们公司使用了 6 年的分布式锁,很是牛逼啊!


下一篇:python3 常见错误(一)