leetCode刷题(使用链表做加法)

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
关键是获取最后一个node节点
/**
 * 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;
}
var addTwoNumbers = function(l1, l2) {
    var addp=l1,addn=l2,addpArr=[],addnArr=[],result;
    while(addp){
        addpArr.push(addp.val);
        addp=addp.next;
    }
    while(addn){
        addnArr.push(addn.val);
        addn=addn.next;
    }
	debugger
    var resultArr=[];
	for(var j=0;j<Math.max(addpArr.length,addnArr.length);j++){
		addpArr[j]=addpArr[j]||0;
        addnArr[j]=addnArr[j]||0;
	}
    for(var i=0;i<Math.max(addpArr.length,addnArr.length);i++){
       
        if(addpArr[i]+addnArr[i]>=10&&i==Math.max(addpArr.length,addnArr.length)-1){
            addpArr[i+1]=0;
            addnArr[i+1]=0;
        }
        if(addpArr[i]+addnArr[i]>=10){
            addpArr[i+1]+=1;
			resultArr.push(addpArr[i]+addnArr[i]-10);
        }else{
			resultArr.push(addpArr[i]+addnArr[i]);
		}
    }
//  我认为应该返回result才是对的,但是事实上返回resultArr才是对的    
//     var result=new listNode("");
// 	result.val=resultArr[0];
// 	result.next=lastNode;
// 	var lastNode;
// 	for(var i = 1;i<resultArr.length;i++){
// 		lastNode=getLastNode(result);
// 		lastNode.next={
// 			val:resultArr[i],
// 			next:null
// 		};
		
// 	}
// 	function getLastNode(list){
// 		while(list.next){
// 			list=list.next;
// 		}
// 		return list;
// 	}
    return resultArr;
};

  

转载于:https://www.cnblogs.com/windseek/p/8624446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值