Skip to content

Commit 7146845

Browse files
author
tanjiasheng
committed
Add Two Numbers
1 parent f5eb3c0 commit 7146845

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

Add Two Numbers/index.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val) {
4+
* this.val = val;
5+
* this.next = null;
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} l1
10+
* @param {ListNode} l2
11+
* @return {ListNode}
12+
*/
13+
var addTwoNumbers = function (l1, l2, res = [0]) {
14+
if (l1 === null && l2 === null) {
15+
return res[res.length - 1] === 0
16+
? res.slice(0, res.length - 1)
17+
: res
18+
}
19+
20+
let l1Val, l2Val, l1Next, l2Next;
21+
22+
if (l1 === null) {
23+
l1Val = 0
24+
l1Next = null
25+
} else {
26+
l1Val = l1.val
27+
l1Next = l1.next
28+
}
29+
if (l2 === null) {
30+
l2Val = 0
31+
l2Next = null
32+
} else {
33+
l2Val = l2.val
34+
l2Next = l2.next
35+
}
36+
37+
const curRes = l1Val + l2Val + res[res.length - 1]
38+
res.splice(
39+
res.length - 1,
40+
res.length,
41+
...(String(curRes >= 10 ? curRes : `0${curRes}`)
42+
.split('')
43+
.reverse()
44+
.map(i => Number(i))
45+
)
46+
)
47+
48+
return addTwoNumbers(
49+
l1Next,
50+
l2Next,
51+
res
52+
)
53+
};

Add Two Numbers/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
和笔算加法的逻辑差不多,给方法添加第三个参数,用以传入上一位的相加结果,递归调用方法,每次拿到当前的数字相加,把结果append进上次的相加结果中,append的同时需要处理上一位的进位。

Two Sum/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* @return {number[]}
55
*/
66
var twoSum = function(nums, target) {
7-
for(let i = 0; i < nums.length; i++) {
7+
for (let i = 0; i < nums.length; i++) {
88
const j = nums.indexOf(target - nums[i])
9-
if(~j && j !== i) {
9+
if (~j && j !== i) {
1010
return [i, j]
1111
}
1212
}

0 commit comments

Comments
 (0)