class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int ans = 0, dif = INT_MAX, len = nums.size();
sort(nums.begin(), nums.end());
for (int i = 0; i < len-2; i++) {
if (i > 0 && nums[i] == nums[i-1])
continue;
int begin = i+1, end = len-1;
while (begin < end) {
int sum = nums[i] + nums[begin] + nums[end];
if (sum == target)
return target;
elseif (sum < target)
begin++;
else
end--;
int temp = abs(target - sum);
if (temp < dif) {
dif = temp;
ans = sum;
}
}
}
return ans;
}
};