File tree Expand file tree Collapse file tree 2 files changed +67
-0
lines changed
lcof2/剑指 Offer II 007. 数组中和为 0 的三个数 Expand file tree Collapse file tree 2 files changed +67
-0
lines changed Original file line number Diff line number Diff line change @@ -398,6 +398,42 @@ def three_sum(nums)
398
398
end
399
399
```
400
400
401
+ #### Swift
402
+
403
+ ``` swift
404
+ class Solution {
405
+ func threeSum (_ nums : [Int ]) -> [[Int ]] {
406
+ let nums = nums.sorted ()
407
+ var ans = [[Int ]]()
408
+ let n = nums.count
409
+
410
+ for i in 0 ..< n- 2 {
411
+ if nums[i] > 0 { break }
412
+ if i > 0 && nums[i] == nums[i - 1 ] { continue }
413
+
414
+ var j = i + 1
415
+ var k = n - 1
416
+
417
+ while j < k {
418
+ let sum = nums[i] + nums[j] + nums[k]
419
+ if sum < 0 {
420
+ j += 1
421
+ } else if sum > 0 {
422
+ k -= 1
423
+ } else {
424
+ ans.append ([nums[i], nums[j], nums[k]])
425
+ j += 1
426
+ k -= 1
427
+ while j < k && nums[j] == nums[j - 1 ] { j += 1 }
428
+ while j < k && nums[k] == nums[k + 1 ] { k -= 1 }
429
+ }
430
+ }
431
+ }
432
+ return ans
433
+ }
434
+ }
435
+ ```
436
+
401
437
<!-- tabs: end -->
402
438
403
439
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func threeSum( _ nums: [ Int ] ) -> [ [ Int ] ] {
3
+ let nums = nums. sorted ( )
4
+ var ans = [ [ Int] ] ( )
5
+ let n = nums. count
6
+
7
+ for i in 0 ..< n- 2 {
8
+ if nums [ i] > 0 { break }
9
+ if i > 0 && nums [ i] == nums [ i - 1 ] { continue }
10
+
11
+ var j = i + 1
12
+ var k = n - 1
13
+
14
+ while j < k {
15
+ let sum = nums [ i] + nums[ j] + nums[ k]
16
+ if sum < 0 {
17
+ j += 1
18
+ } else if sum > 0 {
19
+ k -= 1
20
+ } else {
21
+ ans. append ( [ nums [ i] , nums [ j] , nums [ k] ] )
22
+ j += 1
23
+ k -= 1
24
+ while j < k && nums [ j] == nums [ j - 1 ] { j += 1 }
25
+ while j < k && nums [ k] == nums [ k + 1 ] { k -= 1 }
26
+ }
27
+ }
28
+ }
29
+ return ans
30
+ }
31
+ }
You can’t perform that action at this time.
0 commit comments