Skip to content

Commit f7e359d

Browse files
committed
feat: add swift implementation to lcof2 problem: No.025
1 parent be05c9b commit f7e359d

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

lcof2/剑指 Offer II 025. 链表中的两数相加/README.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,54 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
209209
}
210210
```
211211

212+
#### Swift
213+
214+
```swift
215+
/**
216+
* Definition for singly-linked list.
217+
* public class ListNode {
218+
* var val: Int
219+
* var next: ListNode?
220+
* init() { self.val = 0; self.next = nil; }
221+
* init(_ val: Int) { self.val = val; self.next = nil; }
222+
* init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
223+
* }
224+
*/
225+
226+
class Solution {
227+
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
228+
var s1: [Int] = []
229+
var s2: [Int] = []
230+
231+
var node1 = l1
232+
var node2 = l2
233+
234+
while let n1 = node1 {
235+
s1.append(n1.val)
236+
node1 = n1.next
237+
}
238+
239+
while let n2 = node2 {
240+
s2.append(n2.val)
241+
node2 = n2.next
242+
}
243+
244+
var carry = 0
245+
let dummy: ListNode? = ListNode(0)
246+
247+
while !s1.isEmpty || !s2.isEmpty || carry != 0 {
248+
carry += (s1.isEmpty ? 0 : s1.removeLast()) + (s2.isEmpty ? 0 : s2.removeLast())
249+
let node = ListNode(carry % 10)
250+
node.next = dummy?.next
251+
dummy?.next = node
252+
carry /= 10
253+
}
254+
255+
return dummy?.next
256+
}
257+
}
258+
```
259+
212260
<!-- tabs:end -->
213261

214262
<!-- solution:end -->
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* public class ListNode {
4+
* var val: Int
5+
* var next: ListNode?
6+
* init() { self.val = 0; self.next = nil; }
7+
* init(_ val: Int) { self.val = val; self.next = nil; }
8+
* init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
9+
* }
10+
*/
11+
12+
class Solution {
13+
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
14+
var s1: [Int] = []
15+
var s2: [Int] = []
16+
17+
var node1 = l1
18+
var node2 = l2
19+
20+
while let n1 = node1 {
21+
s1.append(n1.val)
22+
node1 = n1.next
23+
}
24+
25+
while let n2 = node2 {
26+
s2.append(n2.val)
27+
node2 = n2.next
28+
}
29+
30+
var carry = 0
31+
let dummy: ListNode? = ListNode(0)
32+
33+
while !s1.isEmpty || !s2.isEmpty || carry != 0 {
34+
carry += (s1.isEmpty ? 0 : s1.removeLast()) + (s2.isEmpty ? 0 : s2.removeLast())
35+
let node = ListNode(carry % 10)
36+
node.next = dummy?.next
37+
dummy?.next = node
38+
carry /= 10
39+
}
40+
41+
return dummy?.next
42+
}
43+
}

0 commit comments

Comments
 (0)