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; };
学而不思则罔,思而不结则殆,结而不看,一事无成