File tree Expand file tree Collapse file tree 2 files changed +91
-0
lines changed
lcof2/剑指 Offer II 025. 链表中的两数相加 Expand file tree Collapse file tree 2 files changed +91
-0
lines changed Original file line number Diff line number Diff line change @@ -209,6 +209,54 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
209
209
}
210
210
```
211
211
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
+
212
260
<!-- tabs: end -->
213
261
214
262
<!-- solution: end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments