@@ -32,6 +32,22 @@ Output: 7 -> 8 -> 0 -> 7
32
32
33
33
package leetcode
34
34
35
+ /* *
36
+ * Definition for singly-linked list.
37
+ * type ListNode struct {
38
+ * Val int
39
+ * Next *ListNode
40
+ * }
41
+ */
42
+ package leetcode
43
+
44
+ import (
45
+ " github.com/halfrost/LeetCode-Go/structures"
46
+ )
47
+
48
+ // ListNode define
49
+ type ListNode = structures.ListNode
50
+
35
51
/* *
36
52
* Definition for singly-linked list.
37
53
* type ListNode struct {
@@ -93,6 +109,75 @@ func getLength(l *ListNode) int {
93
109
return count
94
110
}
95
111
112
+ func addTwoNumbers1 (l1 *ListNode , l2 *ListNode ) *ListNode {
113
+ reservedL1 := reverseList (l1)
114
+ reservedL2 := reverseList (l2)
115
+
116
+ dummyHead := &ListNode{}
117
+ head := dummyHead
118
+ carry := 0
119
+ for reservedL1 != nil || reservedL2 != nil || carry > 0 {
120
+ val := carry
121
+ if reservedL1 != nil {
122
+ val = reservedL1.Val + val
123
+ reservedL1 = reservedL1.Next
124
+ }
125
+ if reservedL2 != nil {
126
+ val = reservedL2.Val + val
127
+ reservedL2 = reservedL2.Next
128
+ }
129
+ carry = val / 10
130
+ head.Next = &ListNode{Val: val % 10 }
131
+ head = head.Next
132
+ }
133
+ return reverseList (dummyHead.Next )
134
+ }
135
+
136
+ func reverseList (head *ListNode ) *ListNode {
137
+ var prev *ListNode
138
+ for head != nil {
139
+ tmp := head.Next
140
+ head.Next = prev
141
+
142
+ prev = head
143
+ head = tmp
144
+ }
145
+ return prev
146
+ }
147
+
148
+ func addTwoNumbers (l1 *ListNode , l2 *ListNode ) *ListNode {
149
+ stack1 := pushStack (l1)
150
+ stack2 := pushStack (l2)
151
+
152
+ dummyHead := &ListNode{}
153
+ head := dummyHead
154
+ carry := 0
155
+ for len (stack1) > 0 || len (stack2) > 0 || carry > 0 {
156
+ val := carry
157
+ if len (stack1) > 0 {
158
+ val = val + stack1[len (stack1)-1 ]
159
+ stack1 = stack1[:len (stack1)-1 ]
160
+ }
161
+ if len (stack2) > 0 {
162
+ val = val + stack2[len (stack2)-1 ]
163
+ stack2 = stack2[:len (stack2)-1 ]
164
+ }
165
+ carry = val / 10
166
+ tmp := head.Next
167
+ head.Next = &ListNode{Val: val % 10 , Next: tmp}
168
+ }
169
+ return dummyHead.Next
170
+ }
171
+
172
+ func pushStack (l *ListNode ) []int {
173
+ var stack []int
174
+ for l != nil {
175
+ stack = append (stack, l.Val )
176
+ l = l.Next
177
+ }
178
+ return stack
179
+ }
180
+
96
181
```
97
182
98
183
0 commit comments