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:
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 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
-10^4 <= target <= 10^4
Solution:
Steps of resolving the problem:
- Initialise
d
as greater value, and it will be used as comparing the addition of subsequent low-bound and high-bound value. - To perform 2 pointers approach, sorting array is needed.
- Create Iteration through the array, set
lowerBound
asi+1
andupperBound
asnums.length — 1
. In while loop, if lowerBound is smaller than upperBound, setsum
as initial index valuenums[i]
plusnums[lowerBound] + nums[upperBound]
. if the absolute value of the difference is greater than the difference of target and sum,target — sum
will be assigned intod
. If target value is greater than sum, then incrementlowerBound
else decrementupperBound
becauselowerBound
still not achieves the closest value to target and so doesupperBound
. - Finally, return the difference of target and difference value
target — d
.