您的位置:首页 > 其它

2. Add Two Numbers

2016-03-14 20:07 302 查看
/**
* 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) {
var ret = new ListNode(),   //需要返回的那个单链表
p = ret,                //移动的那个指针
c = 0;                  //进位,开始设置为0

while(l1 || l2){
var n1 = 0,
n2 = 0;

if(l1){ n1 = l1.val;l1 = l1.next;}
if(l2){ n2 = l2.val;l2 = l2.next;}
var tmp = n1+n2+c;

c = 0;
if(tmp > 9){
tmp -= 10 ;
c= 1 ;
}

p.val = tmp;
p.next = new ListNode();
var tmp2 = p;           //为了计算最后那个进位
p = p.next;             //指针后移,每次后移的时候已经创建了新的node结点。
}

if(c === 1){ p.val = 1; }   //还有个进位的话,p此时val指向1
else { tmp2.next = null;}   //无进位了,末尾节点是tmp2,将它的next置为空

return ret;
};


注意:最后的那个tmp2操作,开始搞错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: