/*************************************************
题目:找出数组中3个数和最接近Target的值
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).
*************************************************/
int threeSumClosest1(vector<int>& nums, int target)
{
if (nums.size() < 3) return 0;
int closest = nums[0] + nums[1] + nums[2];
for (int i = 0; i < nums.size()-2; i++)
{
int front = i + 1;
int back = nums.size() - 1;
while (front < back)
{
int Cursum = nums[front] + nums[back]+nums[i];
if (abs(Cursum - target)<abs(closest - target))
closest = Cursum;
if (Cursum == target)
{
closest = Cursum;
return closest;
}
if (Cursum>target)
back--;
else
front++;
}
}
return closest;
}