(链表) LeetCode2. 两数相加

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

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

方法:初等数学
** 时间复杂度:O(max(m,n))
空间复杂度: O(max(m,n))**

<html>
<body>
<script>
    /**
     * Definition for singly-linked list.
     * function ListNode(val) {
     *     this.val = val;
     *     this.next = null;
     * }
     */
    /**
     * @param {ListNode} l1
     * @param {ListNode} l2
     * @return {ListNode}
     */
    function ListNode(val) {
        this.val = val;
        this.next = null;
    }
    function createListNode(arr){
        let nextRst = new ListNode(null), 
            result = nextRst;
        arr.forEach(item => {
            nextRst.next = new ListNode(item);
            nextRst = nextRst.next;
        })
        return result.next
    }
    var a = createListNode([4, 0, 8]);
    var b = createListNode([3, 0, 4]);
    var addTwoNumbers = function(l1, l2) {
        let result = new ListNode(null);
        let nextRst = result;
        // 进位
        let params = 0 // 传给下一个层级的值
        let val = 0 // 传给当前层级的值
        
        while(l1 != null || l2 != null) {
            // TODO
            let x = (l1 != null) ? l1.val : 0;
            let y = (l2 != null) ? l2.val : 0;
            
            val = (x + y + params) % 10;
            params = Math.floor((x + y + params) / 10);
           
            nextRst.next = new ListNode(val) 
            nextRst = nextRst.next
            
            if(l1 != null) l1 = l1.next
            if(l2 != null) l2 = l2.next        
        
        }
        
        if(params) {
           nextRst.next = new ListNode(params)
        }
        
        return result.next
    };
    var c = addTwoNumbers(a, b);
</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且...
    TheKey_阅读 313评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,116评论 0 2
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,522评论 0 19
  • 445. 两数相加 II 给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个...
    TheKey_阅读 360评论 0 0
  • 远方的风 起 旋起落叶 梦回曾经 我爱你时 四季如春 尘土亲吻落叶 花朵等待约见 呼吸里都是梦的味道 我不爱你时 ...
    请叫我千花大人阅读 188评论 0 2

友情链接更多精彩内容