和上一篇的类似,也是用O(N^2)的方法,先排序,然后找三个位置加起来与2做差比较绝对值
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int result = 0, minn = abs(nums[0] + nums[1] + nums[2] - target), temp = nums[0] + nums[1] + nums[2];
sort(nums.begin(), nums.end());
int k = 0;
for (; k < nums.size() - 2; ++k)
{
int i = k + 1, j = nums.size() - 1;
while (i < j)
{
int sum = nums[i] + nums[j] + nums[k];
if (sum < target)
{
++i;
if (target - sum < minn)
{
minn = target - sum;
temp = sum;
}
}
else if (sum > target)
{
--j;
if (sum - target < minn)
{
minn = sum - target;
temp = sum;
}
}
else return target;
}
}
return temp;
}
};