1. 程式人生 > >兩數相加JavaScript

兩數相加JavaScript

/**
 * 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/