您的当前位置:首页>全部文章>文章详情

javasript两个数组元素分别相加

发表于:2021-08-23 09:36:27浏览:1233次TAG: #数组相加 #javascript

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

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

 up-52c82b661a8c6a1a47ba81b784e2a245be0.png

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807

示例2:

输入:l1 = [0], l2 = [0]
输出:[0]
解释:0 + 0= 0

示例3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
解释:9999999 + 9999= 89990001

解法:

function sum(a,b,c){
    let d=a+b+c;
    if(d>9){
	let e=d%10;
	return [1,e];
    }
    else{
	return [d];
    }
}
		
function add(len1,len2){
    let i=0,j=0,sumArray = [],addOne=0;
    if(len1.length<len2.length){
	i=len1;
	j=len2;			
    }else{
	i=len2;
	j=len1;	
    }
    for(let m=0;m<j.length;m++){
	let a=0;
	let b=j[m];
	if(m<i.length){
	    a=i[m];
	}
	let k=sum(a,b,addOne);
	if(k.length>1){
	    addOne=1;
	    sumArray.push(k[1]);
	}
	else{
	    sumK=0;
	    sumArray.push(k[0]);
				}
	if(m==j.length-1 && addOne==1){
	    sumArray.push(1);
	}
    }
    console.log(sumArray);
}
//add([2,4,3],[5,6,4]);//[7,0,8]
//add([0],[0]);//[0]
add([9,9,9,9,9,9,9],[9,9,9,9]);//[89990001]