class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int i, n = nums.size(), l, h, sum, min_close = INT_MAX, res;
for(i = 0; i < n; ++i)
{
l = i+1;
h = n-1;
while(l < h)
{
sum = nums[i] + nums[l] + nums[h];
if(sum == target)
return target;
else if(sum < target)
{
if(target - sum < min_close)
{
min_close = target - sum;
res = sum;
}
++l;
}
else
{
if(sum - target < min_close)
{
min_close = sum - target;
res = sum;
}
--h;
}
}
}
return res;
}
};