差點迷失自我, 其實這個系列應該都是在考你要怎麼去移動你的two pointer
當sum < target, 代表你要讓sum大一點, 移動left,反之就移動right
class Solution
{
public:
int threeSumClosest(vector<int> &nums, int target)
{sort(nums.begin(), nums.end());
int res = nums[0] +nums[1]+nums[2];
int min_distance_to_target = INT_MAX;
for (int i = 0; i < nums.size() - 2; i++)
{
if (nums[i] * 3 > target)
return min(res, nums[i] + nums[i + 1] + nums[i + 2]);
int l = i + 1;
int r = nums.size() - 1;
while (l < r)
{
int sum = nums[i] + nums[r] + nums[l];
if (abs(sum - target) < min_distance_to_target)
{
min_distance_to_target = abs(sum - target);
res = sum;
}
if (sum < target)
{
l++;
}
else
{
r--;
}
}
}
return res;
}
};