leetCode刷题(使用链表做加法)
生活随笔
收集整理的這篇文章主要介紹了
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;}debuggervar 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; };
關鍵是獲取最后一個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;}debuggervar 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
總結
以上是生活随笔為你收集整理的leetCode刷题(使用链表做加法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1台路由连接两个网络-一台路由器有两个网
- 下一篇: 路由器无线密码被人知道了怎么办-被别人知