class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int len = nums.size();
int closet = 1000000;
int flag = 0;
for(int i = 0; i < len; ++i)
{
int begin = i + 1;
int end = len -1;
while(begin < end)
{
int sum = nums[begin] + nums[end] + nums[i] - target;
if(sum == 0){
return target;
}else if (sum < 0)
{
++begin;
if(-sum < closet)
{
closet = -sum;
flag = 1;
}
}else
{
--end;
if(sum < closet)
{
closet = sum;
flag = 0;
}
}
}
}
if( flag == 1)
{
return -closet + target;
}else{
return closet + target;
}
}
};
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(), nums.end());
int len = nums.size();
int closet = 1000000;
int flag = 0;
for(int i = 0; i < len; ++i)
{
int begin = i + 1;
int end = len -1;
while(begin < end)
{
int sum = nums[begin] + nums[end] + nums[i] - target;
if(sum == 0){
return target;
}else if (sum < 0)
{
++begin;
if(-sum < closet)
{
closet = -sum;
flag = 1;
}
}else
{
--end;
if(sum < closet)
{
closet = sum;
flag = 0;
}
}
}
}
if( flag == 1)
{
return -closet + target;
}else{
return closet + target;
}
}
};