@@ -2,36 +2,36 @@ func ThreeSum(_ nums: [Int], targetSum: Int) -> [[Int]] {
2
2
var a = nums. sorted ( )
3
3
var ret : [ [ Int ] ] = [ ]
4
4
5
- for i in 0 ..< a. count {
6
- if i != 0 && a [ i ] == a [ i - 1 ] {
5
+ for m in 0 ..< a. count {
6
+ if m != 0 && a [ m ] == a [ m - 1 ] {
7
7
continue
8
8
}
9
9
10
- var j = i + 1
11
- var k = nums. count - 1
10
+ var l = m + 1
11
+ var r = nums. count - 1
12
12
13
- while j < k {
14
- let sum = a [ i ] + a[ j ] + a[ k ]
13
+ while l < r {
14
+ let sum = a [ m ] + a[ l ] + a[ r ]
15
15
16
16
if sum == targetSum {
17
- ret. append ( [ a [ i ] , a [ j ] , a [ k ] ] )
18
- j += 1
17
+ ret. append ( [ a [ m ] , a [ l ] , a [ r ] ] )
18
+ l += 1
19
19
} else if sum < targetSum {
20
- j += 1
20
+ l += 1
21
21
} else {
22
- k -= 1
22
+ r -= 1
23
23
}
24
24
25
25
if sum == targetSum {
26
- while j < k {
26
+ while l < r {
27
27
var flag = false
28
- if j != 0 && a [ j ] == a [ j - 1 ] {
29
- j += 1
28
+ if l != 0 && a [ l ] == a [ l - 1 ] {
29
+ l += 1
30
30
flag = true
31
31
}
32
32
33
- if ( k != a. count - 1 ) && a [ k ] == a [ k + 1 ] {
34
- k -= 1
33
+ if ( r != a. count - 1 ) && a [ r ] == a [ r + 1 ] {
34
+ r -= 1
35
35
flag = true
36
36
}
37
37
@@ -51,3 +51,9 @@ ThreeSum([-1, 0, 1, 2, -1, -4], targetSum: 0)
51
51
52
52
// Answer: [[-1, -1, 1]]
53
53
ThreeSum ( [ - 1 , 1 , 1 , - 1 ] , targetSum: 1 )
54
+
55
+ // Answer: [[-1, -1, 2], [-1, 0, 1]]
56
+ ThreeSum ( [ - 1 , - 1 , - 1 , - 1 , 2 , 1 , - 4 , 0 ] , targetSum: 0 )
57
+
58
+ // Answer: [[-1, -1, 2]]
59
+ ThreeSum ( [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , 2 ] , targetSum: 0 )
0 commit comments