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

2018-06-14 17:40:46 浏览数 (1)

代码语言:javascript复制
Input: (2 -> 4 -> 3)   (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342   465 = 807.
关键是获取最后一个node节点
代码语言:javascript复制
/**
 * 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;
};
ode

0 人点赞