Given an array S of n integers, find three integers in S such, the sum was closest to a Given number, target. Return the sum of the three integers. You may assume this each input would has exactly one solution.
For example, given array S = {-1 2 1 -4}, and target = 1.The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
Difficulty factor: Medium
Realize:
int threeSumClosest(vector<int> &num, int target) { std::sort(num.begin(), num.end()); int closestVal = INT_MAX; int closestSum = 0; int small, big; for (int i = 0; i < num.size() - 2; ++i){ small = i+1; big = num.size()-1; while (small < big) { int sum = num[small] + num[big] + num[i]; int absVal = abs(sum - target); if (absVal < closestVal) { closestVal = absVal; closestSum = sum; cout << closestSum << endl; } if (sum > target) { big--; } else { small++; } } } return closestSum;}
Leetcode16--3sum Closest