Skip to content

Commit a09f10c

Browse files
committed
259. 3Sum Smaller
1 parent 7561b98 commit a09f10c

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ Not only Leetcode solutions in Swift.
1212
* [Two Sum - Difference equals to target](http://www.lintcode.com/en/problem/two-sum-difference-equals-to-target/)
1313
* [217. Contains Duplicate](https://leetcode.com/problems/contains-duplicate/)
1414
* [219. Contains Duplicate II](https://leetcode.com/problems/contains-duplicate-ii/)
15+
* [259. 3Sum Smaller](https://leetcode.com/problems/3sum-smaller)

SwiftyLeetCode.playground/Contents.swift

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ extension Solution {
112112
let sortedNums = nums.sorted()
113113
var closestSum = nums[0] + nums[1] + nums[2]
114114

115-
for i in 0..<sortedNums.count - 1 {
115+
for i in 0..<sortedNums.count - 2 {
116116
var left = i + 1
117117
var right = sortedNums.count - 1
118118
while (left < right) {
@@ -383,3 +383,38 @@ extension Solution {
383383
Solution.containsDuplicateII(nums: nums1, 3)
384384
Solution.containsDuplicateII(nums: nums1, 5)
385385
Solution.containsDuplicateII(nums: nums2, 2)
386+
387+
/**
388+
* 259. 3Sum Smaller
389+
* https://leetcode.com/problems/3sum-smaller
390+
*/
391+
392+
extension Solution {
393+
class func threeSumSmaller(nums: [Int]?, _ target: Int) -> Int {
394+
guard let nums = nums, nums.count > 2 else { return 0 }
395+
396+
let sortedNums = nums.sorted()
397+
var count = 0
398+
399+
for i in 0..<sortedNums.count - 2 {
400+
var left = i + 1
401+
var right = sortedNums.count - 1
402+
while (left < right) {
403+
let sum = sortedNums[i] + sortedNums[left] + sortedNums[right]
404+
if (sum < target) {
405+
count += right - left
406+
left += 1
407+
} else {
408+
right -= 1
409+
}
410+
}
411+
}
412+
413+
return count
414+
}
415+
}
416+
417+
// usage
418+
let threeSumSmallerNums = [-2, 0, 1, 3]
419+
let threeSumSmallerTarget = 2
420+
Solution.threeSumSmaller(nums: threeSumSmallerNums, threeSumSmallerTarget)

0 commit comments

Comments
 (0)