@@ -112,7 +112,7 @@ extension Solution {
112
112
let sortedNums = nums. sorted ( )
113
113
var closestSum = nums [ 0 ] + nums[ 1 ] + nums[ 2 ]
114
114
115
- for i in 0 ..< sortedNums. count - 1 {
115
+ for i in 0 ..< sortedNums. count - 2 {
116
116
var left = i + 1
117
117
var right = sortedNums. count - 1
118
118
while ( left < right) {
@@ -383,3 +383,38 @@ extension Solution {
383
383
Solution . containsDuplicateII ( nums: nums1, 3 )
384
384
Solution . containsDuplicateII ( nums: nums1, 5 )
385
385
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