Skip to content

Commit d2a7b0d

Browse files
committed
commit solution 2
1 parent feaf25a commit d2a7b0d

File tree

5 files changed

+107
-4
lines changed

5 files changed

+107
-4
lines changed

index-tags.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@
3333

3434
| 题号 | 题解 | 标签 | 难度 | 是否解题 |
3535
| --- | --- | --- | --- | --- |
36-
| [9](https://leetcode-cn.com/problems/palindrome-number) | [回文数](/solution/1-99/0009.palindrome-number/) | `数学` | <font color=green>简单</font> ||
36+
| [2](https://leetcode-cn.com/problems/add-two-numbers) | [两数相加](/solution/1-99/0002.add-two-numbers/) | `链表`,`数学` | <font color=blue>中等</font> ||
3737
| [7](https://leetcode-cn.com/problems/reverse-integer) | [整数反转](/solution/1-99/0007.reverse-integer/) | `数学` | <font color=green>简单</font> ||
38+
| [9](https://leetcode-cn.com/problems/palindrome-number) | [回文数](/solution/1-99/0009.palindrome-number/) | `数学` | <font color=green>简单</font> ||
3839
| [13](https://leetcode-cn.com/problems/roman-to-integer) | [罗马数字转整数](/solution/1-99/0013.roman-to-integer/) | `数学`,`字符串` | <font color=green>简单</font> ||
3940

4041
#### **哈希表**
@@ -70,6 +71,7 @@
7071

7172
| 题号 | 题解 | 标签 | 难度 | 是否解题 |
7273
| --- | --- | --- | --- | --- |
74+
| [2](https://leetcode-cn.com/problems/add-two-numbers) | [两数相加](/solution/1-99/0002.add-two-numbers/) | `链表`,`数学` | <font color=blue>中等</font> ||
7375
| [21](https://leetcode-cn.com/problems/merge-two-sorted-lists) | [合并两个有序链表](/solution/1-99/0021.merge-two-sorted-lists/) | `链表` | <font color=green>简单</font> ||
7476
| [83](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list) | [删除排序链表中的重复元素](/solution/1-99/0083.remove-duplicates-from-sorted-list/) | `链表` | <font color=green>简单</font> ||
7577

index-type.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@
405405

406406
| 题号 | 题解 | 标签 | 难度 | 是否解题 |
407407
| --- | --- | --- | --- | --- |
408-
| [2](https://leetcode-cn.com/problems/add-two-numbers) | [两数相加](/solution/1-99/0002.add-two-numbers/) | `链表`,`数学` | <font color=blue>中等</font> |
408+
| [2](https://leetcode-cn.com/problems/add-two-numbers) | [两数相加](/solution/1-99/0002.add-two-numbers/) | `链表`,`数学` | <font color=blue>中等</font> ||
409409
| [3](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters) | [无重复字符的最长子串](/solution/1-99/0003.longest-substring-without-repeating-characters/) | `哈希表`,`双指针`,`字符串` | <font color=blue>中等</font> |
410410
| [5](https://leetcode-cn.com/problems/longest-palindromic-substring) | [最长回文子串](/solution/1-99/0005.longest-palindromic-substring/) | `字符串`,`动态规划` | <font color=blue>中等</font> |
411411
| [6](https://leetcode-cn.com/problems/zigzag-conversion) | [z 字形变换](/solution/1-99/0006.zigzag-conversion/) | `字符串` | <font color=blue>中等</font> |

solution/1-99/0002.add-two-numbers/README.md

+26-2
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,38 @@
1919

2020
### 解题思路
2121

22+
2223
### 具体解法
2324

2425
<!-- tabs:start -->
2526

2627
#### **Golang**
2728
```go
28-
func sk() error {
29-
return nil
29+
type ListNode struct {
30+
Val int
31+
Next *ListNode
32+
}
33+
34+
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
35+
dummy := new(ListNode)
36+
curr := dummy
37+
carry := 0
38+
39+
for l1 != nil || l2 != nil || carry > 0 {
40+
curr.Next = new(ListNode)
41+
curr = curr.Next
42+
if l1 != nil {
43+
carry += l1.Val
44+
l1 = l1.Next
45+
}
46+
if l2 != nil {
47+
carry += l2.Val
48+
l2 = l2.Next
49+
}
50+
curr.Val = carry % 10
51+
carry /= 10
52+
}
53+
return dummy.Next
3054
}
3155
```
3256

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package leetcode
2+
3+
/*
4+
* @lc app=leetcode.cn id=2 lang=golang
5+
*
6+
* [2] 两数相加
7+
*/
8+
9+
// @lc code=start
10+
/**
11+
* Definition for singly-linked list.
12+
* type ListNode struct {
13+
* Val int
14+
* Next *ListNode
15+
* }
16+
*/
17+
type ListNode struct {
18+
Val int
19+
Next *ListNode
20+
}
21+
22+
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
23+
dummy := new(ListNode)
24+
curr := dummy
25+
carry := 0
26+
27+
for l1 != nil || l2 != nil || carry > 0 {
28+
curr.Next = new(ListNode)
29+
curr = curr.Next
30+
if l1 != nil {
31+
carry += l1.Val
32+
l1 = l1.Next
33+
}
34+
if l2 != nil {
35+
carry += l2.Val
36+
l2 = l2.Next
37+
}
38+
curr.Val = carry % 10
39+
carry /= 10
40+
}
41+
return dummy.Next
42+
}
43+
44+
// @lc code=end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package leetcode
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestAddTwoNumbers(t *testing.T) {
8+
9+
listNode1 := &ListNode{
10+
Val: 2,
11+
Next: &ListNode{
12+
Val: 4,
13+
Next: &ListNode{
14+
Val: 3,
15+
Next: nil,
16+
},
17+
},
18+
}
19+
listNode2 := &ListNode{
20+
Val: 5,
21+
Next: &ListNode{
22+
Val: 6,
23+
Next: &ListNode{
24+
Val: 4,
25+
Next: nil,
26+
},
27+
},
28+
}
29+
ret := addTwoNumbers(listNode1, listNode2)
30+
if ret.Val != 7 || ret.Next.Val != 0 || ret.Next.Next.Val != 8 {
31+
t.Fatalf("case fails %v\n", ret)
32+
}
33+
}

0 commit comments

Comments
 (0)