Contents

# Problem

Given an array `nums` of n integers and an integer `target`, find three integers in `nums` such that the sum is closest to `target`. Return the sum of the three integers. You may assume that each input would have exactly one solution.

## example 1

 ``````1 2 3 `````` ``````Input: nums = [-1,2,1,-4], target = 1 Output: 2 Explanation: The sum that is closest to the target is 2. (-1 + 2 + 1 = 2). ``````

## Constraints

• 3 <= `len(nums)` <= 10^3
• -10^3 <= `nums[i]` <= 10^3
• -10^4 <= `target` <= 10^4

# Solution

## Brute force

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 `````` ``````func threeSumClosest(nums []int, target int) int { a:= make(map[int]int,0) for idx:=range nums { a[nums[idx]]++ } closest := math.MaxInt32 ressum := target for idx := range a { a[idx]-- for jdx:= range a { if a[jdx] <= 0 { continue } a[jdx]-- for kdx := range a { if a[kdx] <= 0 { continue } sum := idx+jdx+kdx if int(math.Abs(float64(target-sum))) < closest { ressum = sum closest = int(math.Abs(float64(target-sum))) } } a[jdx]++ } a[idx]++ } return ressum } ``````