兩數相加JavaScript
阿新 • • 發佈:2019-02-05
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
//carry為進位,初始化為0
var c1 = l1, c2 = l2, c3, l3, carry = 0 ;
while(c1 || c2 || carry) {
var v1 = 0, v2 = 0;
if(c1) {
//根據前文給出的程式碼結構val、next
v1 = c1.val;
c1 = c1.next;
}
if (c2) {
v2 = c2.val;
c2 = c2.next;
}
var sum = v1 + v2 + carry;
carry = Math.floor(sum / 10 );//得到進位
if(!c3) {
l3 = new ListNode(sum % 10);
c3 = l3;
} else {
c3.next = new ListNode(sum % 10);
c3 = c3.next;
}
}
return l3;
};
總結:這道題的思路本身也不太難,主要考察的是對連結串列的操作,要理解連結串列的組成方式,增刪查的方式。另一個就是按位進行加法計算,需要考慮進位(數a+數b+進位cin,返回數c和新的進位cin)。
因為連結串列和按位加法都還算的上有一點基礎,但用JavaScript寫以及其對連結串列的操作委實不熟,所以查閱了一些js連結串列的部落格。推薦如下:
https://juejin.im/entry/59cb70995188256aa423b680
http://web.jobbole.com/88843/