Skip to content

Latest commit

 

History

History
116 lines (98 loc) · 2.73 KB

两数相加.md

File metadata and controls

116 lines (98 loc) · 2.73 KB

两数相加

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

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

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

示例:

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

NodeList对象

是DOM操作取出的集合(实际上是基于DOM结构动态查询的结果),用来保存一组有序的节点,可以通过位置来访问这些节点,它并不是array的实例。

Nodelist最大的特点就是它的时效性,DOM结构的变化能自动反映在Node List对象中。也就是说当DOM结构发生变化时,NodeList立刻会发生变化。

NodeList对象转为数组方法:

JavaScript:

解答:

因为是逆序,+10 向后进位

    2 -> 4 -> 3 
    5 -> 6 -> 4 +
    --------------
    7 -> 0 -> 8
注意: 第二列 4+6 进一位,向后进 3 + 4 + 1 = 8
/**
 * 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) {
    let node = new ListNode('head')
    let temp = node , sum , n = 0
    while( l1 || l2 ){
        const n1 = l1 ? l1.val : 0
        const n2 = l2 ? l2.val : 0
        sum = n1 + n2 + n
        temp.next = new ListNode( sum % 10 )
        temp = temp.next
        n = parseInt( sum / 10 )
        if(l1) l1 = l1.next
        if(l2) l2 = l2.next
    }
    if( n > 0 ) temp.next = new ListNode(n)
    return node.next
};
/**
 * 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) {
    var list1 = [];
    var list2 = [];
    var l3 = new ListNode(null);
    var node = l3;
    var pre = 0;
    while(l1!=null||l2!=null){
        list1.push((l1!=null)?l1.val:0);
        list2.push((l2!=null)?l2.val:0);
        if(l1 != null) l1 = l1.next
        if(l2 != null) l2 = l2.next
    }
    for(var i = 0;i<list1.length;i++){
        let sum = 0;
        sum = list1[i]+list2[i]+pre;
        if(sum>=10){
            pre=1;
            sum = sum -10;
        }else{
            pre = 0;
        }
        node.next=new ListNode(sum);
        node = node.next;
        if(i == (list1.length-1) &&pre==1){
        node.next=new ListNode(1);
        node = node.next;
        }
    }
    return l3.next;
};