码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode #2 Add two numbers

时间:2017-10-30 18:24:44      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:nta   ret   eve   解决   记录   its   etc   cli   numbers   

## 题目
>Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contains a single digit. Add the two numbers and return it as a linked list.

> Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
> Output: 7 -> 0 -> 8

---
## 分析
难度中等.
这个题目注意一下是reverse order 意思就是 2 -> 4 -> 3分别是个位,十位,百位
并且l1 & l2的长度不一定是相同的.
解决这道题目的主要是理解两个数相加最大的是进1,不可能进2或者更大的.定义一个carry来记录不进位还是1就好了.
## 解法
```
var addTwoNumbers = function(l1, l2) {
let carry = 0;
let first = new ListNode();
let l3 = first;

while(l1 || l2 || carry) {
// carry 是为了检验如l1 {5} l2{5}这种情况,就是
// 最高位要进位的那种
// 假如不添加,那么 最高位要是进位的话不会被考虑进来.
// 如果不明白可以把while里面的carry去掉 然后测试一下
let sum = carry;
if (l1 !== null) {
sum += l1.val;
l1 = l1.next;
}
if (l2 !== null) {
sum += l2.val;
l2 = l2.next;
}

if (sum > 9) {
carry = 1;
sum = sum-10;
}
else {
carry = 0;
}
l3.next = new ListNode(sum);
l3 = l3.next;
}

return first.next;
};
```

![clipboard.png](/img/bVXAi8)

Leetcode #2 Add two numbers

标签:nta   ret   eve   解决   记录   its   etc   cli   numbers   

原文地址:http://www.cnblogs.com/mysteryven/p/7755290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!