Skip to content

Commit 7901bfb

Browse files
committed
Solution 3sum
1 parent 7fff63d commit 7901bfb

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

3sum/doitduri.swift

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import Foundation
2+
3+
class Solution {
4+
func threeSum(_ nums: [Int]) -> [[Int]] {
5+
var result = [[Int]]()
6+
let sortedNums = nums.sorted()
7+
8+
for i in 0..<sortedNums.count - 2 {
9+
if i > 0 && sortedNums[i] == sortedNums[i - 1] {
10+
continue
11+
}
12+
13+
var leftNumber = i + 1
14+
var rightNumber = sortedNums.count - 1
15+
16+
while leftNumber < rightNumber {
17+
let sum = sortedNums[i] + sortedNums[leftNumber] + sortedNums[rightNumber]
18+
19+
if sum < 0 {
20+
leftNumber += 1
21+
} else if sum > 0 {
22+
rightNumber -= 1
23+
} else {
24+
result.append([sortedNums[i], sortedNums[leftNumber], sortedNums[rightNumber]])
25+
26+
while leftNumber < rightNumber && sortedNums[leftNumber] == sortedNums[leftNumber + 1] {
27+
leftNumber += 1
28+
}
29+
30+
while leftNumber < rightNumber && sortedNums[rightNumber] == sortedNums[rightNumber - 1] {
31+
rightNumber -= 1
32+
}
33+
34+
leftNumber += 1
35+
rightNumber -= 1
36+
}
37+
}
38+
}
39+
40+
return result
41+
}
42+
}
43+

0 commit comments

Comments
 (0)