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;
};

  

posted on 2018-03-22 16:02  杨龙飞  阅读(138)  评论(0编辑  收藏  举报

导航

Fork me on GitHub